Комментарии 67
Практически невозможно научить хорошо программировать студентов, которые раньше изучали BASIC: как потенциальные программисты они умственно искалечены, без надежды на восстановление.
Вообще чушь. Мыслящие люди начав писать на Бейсике сразу чувствовали чего им там не хватает. Потом увидев это в C++ или Pascal мгновенно и радостно меняли язык. Если студент не относится к мыслящим людям, то из него полюбому нормального программиста не выйдет, с чего он ни начни.
Возможно это конкретно мне так не повезло, в других местах все мгновенно адаптируются и всё такое, как вы написали, я таких практически не встречал.
Конкретно при переходе с языка низкого уровня на язык высокого, иногда пользуешься низкоуровневым подходом, потому что представляешь, как оно устроено, и понимаешь, что это эквивалентно, но проще. Особенно касается указателей, циклов, и условий — иногда проще напрямую обращаться к памяти, чем пользоваться интерфейсами яву.
Да, это опасно, да, это может перестать работать на другом железа/версии языка. Но многим достаточно, что работает здесь и сейчас
в привычных рамках активных манипуляций с указателями на указатели и прочих удивительных вещей (представьте что-нибудь на свой вкус, а то долго расписывать придется)
«Вы так говорите, как будто это что-то плохое» (с)
А как же дебаты о
Я еще помню конструкцию
IF(I) 10,20,30
И ничего, жили как-то. А сейчас кажется хтоническим полярным зверем, кода это вижу.
постоянное foo* bar= new foo() без последующего delete.Это тот случай, когда безопаснее использовать region-based memory management и быть уверенным, что весь выделенный пул будет в заранее заданный момент гарантированно уничтожен, если даже один из программистов не очистил память за собой.
— запрещенные: Cobol, Fortran,…
— не рекомендуемые: Basic,…
Доктор запретил C#, т.к. наблюдаются явные признаки ожирения кода. Весь день держу себя в руках, время от времени позволяя себе чуть-чуть кода на Delphi, но вчера после очередной бессонной ночи не выдержал, сорвался… очнулся только к обеду за клавиатурой и с запущенной Visual Studio.
Если у вас в руках молоток (суровое прошлое), то всё вокруг кажется гвоздями (пиши на С или умри).
И если провести такие исследования, то велика вероятность, что с точки зрения задействованных отделов мозга, программирование (именно процесс программирования, а не запись полученного ответа на каком-то языке программирования) ничем не будет отличаться от других разделов высшей математики.
Эдсгер Дейкстра, один из влиятельнейших учёных в сфере информатики, знал об этом, когда сказал
Ну или он просто высказал своё субъективное мнение, которое подхватили, потому что он
один из влиятельнейших учёных в сфере информатики
COBOL уродует разум; его преподавание нужно расценивать как уголовное преступление.
Практически невозможно научить хорошо программировать студентов, которые раньше изучали BASIC: как потенциальные программисты они умственно искалечены, без надежды на восстановление.
Ооо, да, набор самых дебильных цитат из мира it :)
Практически невозможно научить хорошо программировать студентов, которые раньше изучали BASIC: как потенциальные программисты они умственно искалечены, без надежды на восстановление.
*вставить шутку про 1С*
Почитайте сами что?
Я уж не говорю про то, что язык, по сути, не принципиален, только парадигма. Писать функциональщину, ООП или процедурный — хоть одновременно — можно на куче разных в наше-то время.
А вот взросление уже пошло на Java. Тут уже и архитектура, и паттерны, и бронировка кода.
*Ну а так, конечно, даже в JS можно вспомнить «лучше пойду в проститутки».jpg
Однако не так давно учёные приступили к изучению влияния программирования на мозг, и...
Я так понимаю, что это были британские учёные? :)
Мне нравится. А Бейсик — это, ИМХО, чудо(вище) какое-то, именно для ломки мозга
Ну и парой ассебмлеров пользовался: ZEUS (в котором был ответ «42») и GENS/MONS — после калькулятора это не так сложно.
А как вы ASM загружали?
P.S. Даже любопытно, как вы отмажетесь =)
Математика — наука о численных и пространственных отношениях реального мира. Программирование — средство реализации управляющих и расчетных алгоритмов. Основанных на реальной физике, математике и МСФО.
А отрицательно влияет, судя по Дейкстре. Снобизм на пустом месте. Замечали крутость «теплых ламповых» софтинок из 80-х? Их писали люди с мышлением, сформированным реальной жизнью, а не изуродованным «объектно-ориентированной парадигмой».
Дейкстра — вообще не сторонник ООП, а сторонник «дисциплины программирования», и он ненавидел Basic за активное использование в нём GoTo.
Классический Basic позволял редактировать код в живую и весьма своеобразным способом
10 что-нибудь 20 что-нибудь
редактировалось вставкой
10 что-нибудь 15 что-нибудь добавили 20 что-нибудь
что позволяло сесть писать программу с ходу, но если недостаточно всё заранее продумали, то код превращался в лапшу с обилием GoTo.
10 что-нибудь 15 что-нибудь 16 GOTO 70 20 что-нибудь ... 49 REM следующая строка конец программы 50 RETURN ... 70 что-нибудь добавили 75 что-нибудь добавили 80 что-нибудь добавили 85 что-нибудь добавили 90 GOTO 20
Дейкстра же требовал в рамках «дисциплины программирования» сначала вылизать алгоритм на бумажке, так чтобы в нём не было GoTo, и только затем сесть писать программу.
goto 100
call 100
Если убрать нумерацию строк, то необходимо сразу ввести блоки. А в бейсике их просто не было. Поэтому не было никакого смысла менять goto на что-то, если структура оставалась неизменной.
А на счет Си, действительно, те, кто долго и эффективно писал на Си, испытывают трудности даже с С++, не говоря уже о C# и Жабе. А вот с ЛИСПом у них никаких проблем. Но потом становится пофиг.
Мне, наверное повезло, потому что изучив работу с компом и программирование в восьмеричных кодах, я сразу приступил к изучению Ada. Никаких стереотипов не осталось. А насчет Скриптовых, то до сих пор жалею. что в браузерах поселился JS, а не более подходящий для этого Rexx.
Мы также знаем, что программисты часто тратят больше времени на исправление и рефакторинг имеющегося кода, чем на написание нового с нуля.
А такая теория — на мозг влияет не само программирование, а отладка и рефакторинг, которые занимают бОльшую часть времени.
Ведь именно отладка заставляет программиста критично относится к коду, и рассчитывать не на изначальную конструкцию, а именно на тесты/отладку, чтобы получить в конце концов результат?
Да еще контролировал правильность набора команд по 16-ричным кодам в забавном отображении на 7 сегментах (А=-, B=L, C=C, D=Г, F=пусто).
Да и не то что программировать — просто считать на этом аппарате надо было, вывернув мозг: стек, обратная польская запись.
Потом был Школьный Алгоритмический язык, потом таки Бейсик (в разных вариантах — на Специалисте один, на БК-0011 другой, на PC XT третий).
В ВУЗе же, чтоб жизнь медом не казалась — для начала побитное забивание микропрограммы в набор микропроцессорных секций, а также проектирование микропрограммных автоматов (то есть по сути — табличных конечных автоматов) на ПЗУ и регистре-защёлке.
После этого машинные коды 8080 (точнее, 580ИК80), набиваемые с клавиатуры, казались раем (не, не ассемблер, именно 16-ричные коды).
Потом были Турбо Паскаль и ФоксПро.
Потом устройство на работу, где на отдел в 15-20 программистов — пяток компов. Пиши на бумаге. И для начала — не прогу, а R-граф (это типа блок-схемы, только с нотацией, пригодной для печати ASCII-графикой на АЦПУ типа «печатная машинка», с фиксированным шрифтом). И в результате приобретение убеждения, что софт должен проектироваться, как любая инженерная конструкция — а на каком языке в итоге кодировать, вопрос второй.
Неудивительно, что через много лет позже я стал фанатом SWITCH-технологии и ООП с явным выделением состояний.
На очереди — изучение языка релейной логики Ladder Diagram; не думаю, что будут сложности.
Вы здорово описали процесс обучения.
Меня учили на схемотехника, но: курс первый — ВТИЭР, язык Фортран
курс второй — программирование PL/1 ( как-то так, с извратом, а на перфокартах надо было бить /I)
курс третий — какой-то диалект BASIC
курс четвёртый — ассемблер PDP-11
курс пятый — ФОКАЛ (кастрированная версия BASIC).
Много… и бестолково. Так что проблема обучения программированию фундаментальнее проблеме выбора языка для работы.
Процесс я описал больше самообучения, из собственно обучения в этой простыне — только микропрограммы и 8080. Когда начался курс лекции по ЯВУ и изучение Паскаля — я его и так знал в объёме, превышающем лекционный курс.
Калькуляторами я увлекся в среднем школьном возрасте, по публикациям в «Технике-молодежи», бейсик стал изучать по книгам приблизительно в то же время, когда вокруг стали появляться всякие «Микроши» и подобное.
PL/1 ( как-то так, с извратом, а на перфокартах надо было бить /I)а чо с извратом-то, латиницей он именно так и пишется — PL/I (это по-русски ПЛ/1). Кстати, вместе с бейсиком я и по другим языкам конспектировал книги — и в том числе по PL/M.
И Фокал тоже начинал изучать — у меня до сих пор книжка по нему сохранилась. Только вот он в основном был на БК-0010, который мне так и не встретился, а на техникумовских БК-0011 уже бейсик прошивался.
Ну а реальное обучение программированию началось таки уже на работе, как я уже и писал.
Как программирование влияет на мозг и мышление