Об обучении программированию [4]
Jan. 20th, 2008 10:55 pmА вот более формализованное и расширенное описание того тезиса, с которого началась данная тема.
Сложность - основная проблема программирования; связана с самой его природой; можно надеяться на её понижение для освоенных классов задач... Первый источник сложности в программировании - так называемый семантический разрыв - разрыв между уровнем и характером элементарных объектов и операций, с одной стороны, и потенциально возможных услуг - с другой. Иными словами, это проблема согласования масштаба - ювелирными инструментами предлагается сооружать города... Занимаясь определённым классом услуг (задач) , можно стремиться выделить характерный именно для этого класса набор элементарных объектов и операций, построить соответствующий исполнитель (аппаратным или программным способом) и программировать на таком более подходящем исполнителе. Фактически это означает создать адекватный выбранному классу услуг язык программирования. На практике это самый распространённый способ борьбы со сложностью и одновременно основная причина роста проблемно-ориентированных языков... В качестве второго источника сложности в современном программировании следует назвать незнание компьютером реального мира. Лишённый необходимых знаний, компьютер не может не только скорректировать неточно указанные в программе действия, но и проинформировать об отклонениях от направления на цель работы. Традиционное для компьютеров управление посредством указания действий, а не целей требует учета мельчайших нюансов всех обстоятельств, в которых может оказаться исполнитель в процессе предоставления нужной услуги...
Важнейшим средством борьбы с семантическим разрывом служит аппарат абстракции-конкретизации, имеющийся в том или ином виде в любом языке программирования... Важнейшим средством борьбы с незнанием реального мира служит аппарат прогнозирования-контроля...
(источник)
Интересно получается - с одной стороны, интерес к подобной тематике достаточно явно коррелирует с лагерем "противников" текущего мэйнстрима сред исполнения и языков разработки. В то же время противоположная группа - "практики" ведут себя как викинги или янычары классического периода: забирая людей, они не только ничего не дают в теоретическом плане, но и наоборот - уничтожают рассадники всего, что непохоже на святую троицу современной практики C++/Java/C#.
Тотальное сужение кругозора обучаемых за счёт концентрации на мэйнстриме - фактор, который должен оказывать очень существенное отрицательное влияние на уровень обучения.
Сложность - основная проблема программирования; связана с самой его природой; можно надеяться на её понижение для освоенных классов задач... Первый источник сложности в программировании - так называемый семантический разрыв - разрыв между уровнем и характером элементарных объектов и операций, с одной стороны, и потенциально возможных услуг - с другой. Иными словами, это проблема согласования масштаба - ювелирными инструментами предлагается сооружать города... Занимаясь определённым классом услуг (задач) , можно стремиться выделить характерный именно для этого класса набор элементарных объектов и операций, построить соответствующий исполнитель (аппаратным или программным способом) и программировать на таком более подходящем исполнителе. Фактически это означает создать адекватный выбранному классу услуг язык программирования. На практике это самый распространённый способ борьбы со сложностью и одновременно основная причина роста проблемно-ориентированных языков... В качестве второго источника сложности в современном программировании следует назвать незнание компьютером реального мира. Лишённый необходимых знаний, компьютер не может не только скорректировать неточно указанные в программе действия, но и проинформировать об отклонениях от направления на цель работы. Традиционное для компьютеров управление посредством указания действий, а не целей требует учета мельчайших нюансов всех обстоятельств, в которых может оказаться исполнитель в процессе предоставления нужной услуги...
Важнейшим средством борьбы с семантическим разрывом служит аппарат абстракции-конкретизации, имеющийся в том или ином виде в любом языке программирования... Важнейшим средством борьбы с незнанием реального мира служит аппарат прогнозирования-контроля...
(источник)
Интересно получается - с одной стороны, интерес к подобной тематике достаточно явно коррелирует с лагерем "противников" текущего мэйнстрима сред исполнения и языков разработки. В то же время противоположная группа - "практики" ведут себя как викинги или янычары классического периода: забирая людей, они не только ничего не дают в теоретическом плане, но и наоборот - уничтожают рассадники всего, что непохоже на святую троицу современной практики C++/Java/C#.
Тотальное сужение кругозора обучаемых за счёт концентрации на мэйнстриме - фактор, который должен оказывать очень существенное отрицательное влияние на уровень обучения.
no subject
Date: 2008-01-20 09:13 pm (UTC)no subject
Date: 2008-01-20 09:16 pm (UTC)А про F# в VS - как скоро? И хорошо бы, чтобы оно не только под Вистой шло.:)
no subject
Date: 2008-01-20 09:20 pm (UTC)Правда я все-равно предпочитаю Emacs, так что может допилю tuareg-mode до вменяемой поддержки f#
no subject
Date: 2008-01-20 10:33 pm (UTC)no subject
Date: 2008-01-20 11:44 pm (UTC)По-друге, я знаю дуже мало студентів, які справді знають C++. Більше того, я себе не відношу до людей, які його знають добре, хоч це, разом з pure C, мій основний інструмент вже багато років.
Ну і по-третє, мені якось не хочеться думати, що я "знищую" розсадники всього, що не схоже на "святу трійцю". Хочеться, щоби люди, які зараз виходять з різноманітних навчальних закладів могли хоч приблизно вирішувати реальні практичні задачі.
no subject
Date: 2008-01-21 07:37 am (UTC)no subject
Date: 2008-01-21 07:49 am (UTC)В практике роль играют совершенно не теоретические факторы. Например, успех Си в 80-х - результат сочетания широких возможностей языка и низкой стоимости реализации этих возможностей в короткой перспективе. Теория тут ни при чём.
> По-друге, я знаю дуже мало студентів, які справді знають C++.
Насколько их знание реально - в данном случаев мало принципиально.
> Ну і по-третє, мені якось не хочеться думати, що я "знищую" розсадники всього, що не схоже на "святу трійцю".
Знаешь про трёх китайских обезьян?
> Хочеться, щоби люди, які зараз виходять з різноманітних навчальних закладів могли хоч приблизно вирішувати реальні практичні задачі.
Мне тоже этого хочется. Только всё больше кажется, что для этого надо менять мэйнстрим.
no subject
Date: 2008-01-21 11:21 am (UTC)no subject
Date: 2008-01-28 01:08 am (UTC)no subject
Date: 2008-01-28 07:14 am (UTC)Первая ничего не слышит, вторая ничего не видит, третья ничего никому не скажет.
> Також, я абсолютно не розумію, як зміни в мейнстрімі приведуть до того, що молоді кадри стануть більш боєготовими. Поясни, плс.
Ещё раз пояснить? Использование более грамотно продуманных средств приведёт к расширению обучения им, а это в свою очередь - использованию сразу более адекватных методов обучения.
Malx
Date: 2008-03-06 08:56 pm (UTC)Скоро понадобятся программисты человеческих компьютеров ;))))
http://video.google.com/videoplay?docid=-8246463980976635143
т.е компов использующих людей в качестве "вычислителей".
no subject
Date: 2008-03-07 01:33 am (UTC)