netch: (bird)
С такой стороны ещё не смотрел на эту проблему.

Коли я навчався програмуванню, а це було досить давно, то я бачив декілька перетин на цьому шляху. Одна з перетин була у тому, що люди не розуміли концепцію машини Тьюрінга. Мова програмування для них була нібито ще одна природна мова. Нові програми будуються по аналогії. Є програма для знаходження мінімального елементу в масиві. Треба найти максимальний. Змінюємо символ > на <. Якщо програма не працює, то можна перефразувати. Все рівно як пробуєш вимовити шведське слово. Тебе не зрозуміли, ти трохи міняєш вимову та сподіваєшся на краще. Інколи цей підхід працює. Особливо, дивлячись на код індусів.

Але такі люди не змозі взяти gdb або інший зневадник, дописати у програму логи, або якимось іншим шляхом знайти причину, чому програма не працює. Це нерозв’язувана проблема.

(источник)

По наблюдению за собой, существенная часть кода пишется именно так - особенно при копипастинге. Но в правильном подходе уже после этого этапа действительно включается голова и начинается шлифровка полученного; а вот если не шлифовать - как раз и получается очередной Кумар.
netch: (bird)
Всё параллельное программирование - это попытка локализовать порядок в хаосе. Неправда, что программист создал хаос; нет, он его просто впустил. Теперь он создаёт острова порядка в океане хаоса. Хаос никуда не девается, но на входе его упорядочивают. Все эти семафоры и мониторы - защитники крошечных островков, на большее они не способны. Островки линейных порядков пассивно носятся на волнах и ломаются о прибрежные скалы.

Но вечно так продолжаться не может. И рано или поздно должно появиться то, что впускает этот хаос в себя и способно не отграничиваться от него, но быть его частью. Раз это океан, то его жители - Рыбы Хаоса. И за ними - будущее. Но какими они будут? И смогут ли люди их создавать и использовать?
netch: (Default)
А вот более формализованное и расширенное описание того тезиса, с которого началась данная тема.


Сложность - основная проблема программирования; связана с самой его природой; можно надеяться на её понижение для освоенных классов задач... Первый источник сложности в программировании - так называемый семантический разрыв - разрыв между уровнем и характером элементарных объектов и операций, с одной стороны, и потенциально возможных услуг - с другой. Иными словами, это проблема согласования масштаба - ювелирными инструментами предлагается сооружать города... Занимаясь определённым классом услуг (задач) , можно стремиться выделить характерный именно для этого класса набор элементарных объектов и операций, построить соответствующий исполнитель (аппаратным или программным способом) и программировать на таком более подходящем исполнителе. Фактически это означает создать адекватный выбранному классу услуг язык программирования. На практике это самый распространённый способ борьбы со сложностью и одновременно основная причина роста проблемно-ориентированных языков... В качестве второго источника сложности в современном программировании следует назвать незнание компьютером реального мира. Лишённый необходимых знаний, компьютер не может не только скорректировать неточно указанные в программе действия, но и проинформировать об отклонениях от направления на цель работы. Традиционное для компьютеров управление посредством указания действий, а не целей требует учета мельчайших нюансов всех обстоятельств, в которых может оказаться исполнитель в процессе предоставления нужной услуги...

Важнейшим средством борьбы с семантическим разрывом служит аппарат абстракции-конкретизации, имеющийся в том или ином виде в любом языке программирования... Важнейшим средством борьбы с незнанием реального мира служит аппарат прогнозирования-контроля...


(источник)

Интересно получается - с одной стороны, интерес к подобной тематике достаточно явно коррелирует с лагерем "противников" текущего мэйнстрима сред исполнения и языков разработки. В то же время противоположная группа - "практики" ведут себя как викинги или янычары классического периода: забирая людей, они не только ничего не дают в теоретическом плане, но и наоборот - уничтожают рассадники всего, что непохоже на святую троицу современной практики C++/Java/C#.

Тотальное сужение кругозора обучаемых за счёт концентрации на мэйнстриме - фактор, который должен оказывать очень существенное отрицательное влияние на уровень обучения.
netch: (Default)
Начало было тут

Пока искал аргументы - набрёл на вот такое:

Ну что вы, за полгода, если есть желание и хоть какая-то предрасположенность к логике, можно стать неплохим кодировщиком. Я по э-почте обучил 300 человек, попадались очень талантливые.

Надо уточнить границы "хоть какой-то" предрасположенности, но результат сам по себе 1) практический, 2) высочайший.

UPD: Обсуждение резко ушло куда-то не туда, куда я ожидал:) Мне пофиг, насколько у него "дельфийский стиль" или какие у него знания просто о существовании Lisp, Haskell и многих других страшных слов.
Потому что процедурное программирование - не худшее направление:) И если человек реально умеет привлечь и обучить - это 1) само по себе полезно, 2) может быть перенесено и на другие направления, при адекватной адаптации методики.
netch: (Default)
Эта запись чрезвычайно интересна как сама по себе, так и комментариями. Но есть
моменты, которые меня не устраивают: модальность и концентрация на одном
факторе.

Read more... )

Тем временем в ленте увидел ещё обсуждение, у sergeyr (детально ещё не прочитал).

UPD:
часть 2
netch: (Default)
Вот такое такое обучение "информационным технологиям" - и является прямой причиной того, что полные ламеры хотят "штуку" с ходу ничего не умея, а людей что-то знающих уже не найти.
Более простыми методами такого уровня самомнения не достичь.

Тоскую по временам, когда учились на бумаге, зато по Ершову.

UPD: специальность "Защита информации" :((( (см. комментарии)
Page generated Aug. 21st, 2017 06:42 am
Powered by Dreamwidth Studios