Как стать автором
Обновить

Комментарии 67

Программистом быть — хорошо, но это еще не точно…
Завязка на тренажерку подтверждает (что все далеко не так радужно) — категорически стало невозможно жить без физ-нагрузки на тело. Иначе жопа/спина/ноги «сходят с ума».
Йоды магистра речи тайна раскрыта, оказывается, на форте программист старый есть он просто.
Практически невозможно научить хорошо программировать студентов, которые раньше изучали BASIC: как потенциальные программисты они умственно искалечены, без надежды на восстановление.


Вообще чушь. Мыслящие люди начав писать на Бейсике сразу чувствовали чего им там не хватает. Потом увидев это в C++ или Pascal мгновенно и радостно меняли язык. Если студент не относится к мыслящим людям, то из него полюбому нормального программиста не выйдет, с чего он ни начни.
полностью поддерживаю. Именно так и происходило.
На следует помнить, что во времена Дейстры программисты начинали свой путь в возрасте заметно старшем, чем мы начинали. В 16-20 лет перестроиться на что угодно можно, в 35-40 уже сложнее.
И ещё тогда был меньше доступ к информации.
В 32 спокойно пересел с разработки десктопных приложений на Web.
бейсик был в 88-89 году в школе… а Паскаль и Си начался уже в 90 году в институте… нормально… 18 лет…
Пришлось лично наблюдать довольно страшные вещи. Лет 15 тому назад в небольшом коллективе системщиков, переходящих с си на с++, у большей части мышление и через 3 года оставалось в привычных рамках активных манипуляций с указателями на указатели и прочих удивительных вещей (представьте что-нибудь на свой вкус, а то долго расписывать придется). Не менее фантастические вещи наблюдались и с многими людьми, переходящими с привычного C# на С++, самое невинное это постоянное foo* bar= new foo() без последующего delete.
Возможно это конкретно мне так не повезло, в других местах все мгновенно адаптируются и всё такое, как вы написали, я таких практически не встречал.
НЛО прилетело и опубликовало эту надпись здесь

Конкретно при переходе с языка низкого уровня на язык высокого, иногда пользуешься низкоуровневым подходом, потому что представляешь, как оно устроено, и понимаешь, что это эквивалентно, но проще. Особенно касается указателей, циклов, и условий — иногда проще напрямую обращаться к памяти, чем пользоваться интерфейсами яву.
Да, это опасно, да, это может перестать работать на другом железа/версии языка. Но многим достаточно, что работает здесь и сейчас

в привычных рамках активных манипуляций с указателями на указатели и прочих удивительных вещей (представьте что-нибудь на свой вкус, а то долго расписывать придется)


«Вы так говорите, как будто это что-то плохое» (с)

А как же дебаты о том сколько поместится ангелов на конце иглы эквивалентности **argv и *argv[]?

Я еще помню конструкцию

IF(I) 10,20,30

И ничего, жили как-то. А сейчас кажется хтоническим полярным зверем, кода это вижу.

постоянное foo* bar= new foo() без последующего delete.
Это тот случай, когда безопаснее использовать region-based memory management и быть уверенным, что весь выделенный пул будет в заранее заданный момент гарантированно уничтожен, если даже один из программистов не очистил память за собой.
Ну само собой, new с последующим delete это или наследие си с его malloc/free, или, если без delete, то C#. На плюсах делать вручную «new/delete» и прочие «open/не забыть close» не надо, как ни очевидно, но до многих и через месяцы и годы практики не доходит.
Пффф, я вас умоляю, для многих (судя по форумам) «программистов» c# открытие, что есть объекты, которым надо вручную освобождать ресурсы вызывая метод Dispose() или оборачивая в директиву using. И очень удивляются, когда программа разжирается до 2гб в памяти и падает в Out of memory.
Я когда после бэйсика открыл для себя С# я рыдал от счастья, потому что не надо больше заниматься извращениями придумывая костыли к костылям и каждый раз изобретать велосипед новой модификации…
т.к. разные языки программирования используют разные области мозга, то наверное можно можно сформулировать некую базовую программистскую диету (набор рекомендуемых и нежелательных языков программирования) для многостороннего гармоничного развития программистского мозга, например:
— запрещенные: Cobol, Fortran,…
— не рекомендуемые: Basic,…
Программистская диета — это сильно…
Доктор запретил C#, т.к. наблюдаются явные признаки ожирения кода. Весь день держу себя в руках, время от времени позволяя себе чуть-чуть кода на Delphi, но вчера после очередной бессонной ночи не выдержал, сорвался… очнулся только к обеду за клавиатурой и с запущенной Visual Studio.
Хотите вырастить Злого Властелина? Подарите ребёнку книжку по Ассемблеру.
Вот вы ржоте, а у меня первым более-менее серьезным языком был ассемблер :(
НЛО прилетело и опубликовало эту надпись здесь
Гвозди (пусть будет С), шурупы (С++), клей (Java), заклёпки (Go), двусторонний скотч (ну это Perl без вариантов) эквивалентны с той точки зрения, что являются крепежом.

Если у вас в руках молоток (суровое прошлое), то всё вокруг кажется гвоздями (пиши на С или умри).
По-вашему, джависты никогда в жизни не смогут в С?

Смогут. Есть такой клей, называется "жидкие гвозди". А вот Сишники, если хотят в С++, частенько забивают шурупы молотком!


Шутка, конечно.

Автор (или переводчик?) элементарно путает «математику» и «арифметику». Интересно, кто-то изучал, какие области мозга задействованы при работе, например, с теорией категорий или топологией? Насколько вообще в современной высшей математике задействованы области мозга, отвечающие за арифметические вычисления?

И если провести такие исследования, то велика вероятность, что с точки зрения задействованных отделов мозга, программирование (именно процесс программирования, а не запись полученного ответа на каком-то языке программирования) ничем не будет отличаться от других разделов высшей математики.
Автор считает, будто учётным казалось, что программисты прогоняют тестовые примеры в процессе анализа кода.
Ещё и от языка зависит. Где-то в Haskell вроде теоркат используется.
Эдсгер Дейкстра, один из влиятельнейших учёных в сфере информатики, знал об этом, когда сказал

Ну или он просто высказал своё субъективное мнение, которое подхватили, потому что он
один из влиятельнейших учёных в сфере информатики
COBOL уродует разум; его преподавание нужно расценивать как уголовное преступление.

Практически невозможно научить хорошо программировать студентов, которые раньше изучали BASIC: как потенциальные программисты они умственно искалечены, без надежды на восстановление.

Ооо, да, набор самых дебильных цитат из мира it :)
Практически невозможно научить хорошо программировать студентов, которые раньше изучали BASIC: как потенциальные программисты они умственно искалечены, без надежды на восстановление.

*вставить шутку про 1С*
<КЭП>Сравнение универсальных ЯП с 1С некорректно. Последнее — это проблемно-ориентированная среда со своим заточенным под конкретную задачу языком.</КЭП>
Но вот под какую задачу, тщательно скрывают )
Как постоянно всех поправлял один мой знакомый — «Я не программист 1С, а специалист 1С».
Бухгамист.
Давно это понимал. Программирование это фактически описание жизни. Программист в пределе может описать всю вселенную, включая поведение людей и тд. И я бы еще добавил что для программиста хорошо быть буддистом или индуистом ну или атеистом. Почему? Почитайте сами.
Потому что большинство программистов — из индии и экс-СССР?

Почитайте сами что?

Про буддизм, что это такое. Срединный путь, благородные истины…

Ну и программист это не совсем правильное понятие которое я использовал. Правильнее назвать: разработчик программного обеспечения. Программист — это больше как кодер, он не создает общую архитектуру проекта.
Интересно, что скажут знатоки про дальнейшую судьбу того, у кого первым активно используемым языком был verilog?
Куча ругани и никакого конструктива. Так, собственно, хоть какой-то кандидат есть хороший для первого языка?
Я уж не говорю про то, что язык, по сути, не принципиален, только парадигма. Писать функциональщину, ООП или процедурный — хоть одновременно — можно на куче разных в наше-то время.
Мне легче всего было начать с JS — очень щадящие условия были в то время. Но это было до бабелей и прочего зверья.

А вот взросление уже пошло на Java. Тут уже и архитектура, и паттерны, и бронировка кода.

*Ну а так, конечно, даже в JS можно вспомнить «лучше пойду в проститутки».jpg
Я предлагаю LabView. Мощно развивает визуальное мышление. Только действие, никаких отвлечений на поиски названий переменных и пр., функция в виде графического объекта, а не текста, базовое распараллеливание задач. И прочее.
Однако не так давно учёные приступили к изучению влияния программирования на мозг, и...

Я так понимаю, что это были британские учёные? :)
А я начинал с Pascal, да и сейчас с удовольствием на Delphi пишу. ООП, язык структурированно-логичный и понятный, низкоуровневые вещи тоже вполне…
Мне нравится. А Бейсик — это, ИМХО, чудо(вище) какое-то, именно для ломки мозга
Во времена моего детства/отрочества у меня был Спектрум с ОС TR-DOS, соответственно в шаговой доступности Basic и пара книг по нему (совсем детских, почти в стиле комиксов). На тот момент, по крайней мере в моём окружении, ничего лучше для знакомства с миром разработки ПО не было.
Когда у меня появился Спектрум (без дисковода), я уже программировал на калькуляторе МК-61 (и на МК-51, который не был программируемым — для него программы писал на бумажке, чтобы не думать при вычислениях) — а там уже были C, Forth, Pascal, LOGO, Beta-Basic (в котором были нормальные процедуры и функции), правда, надо было их грузить с кассеты каждый раз, но никто не говорил, что будет легко.
Ну и парой ассебмлеров пользовался: ZEUS (в котором был ответ «42») и GENS/MONS — после калькулятора это не так сложно.
Начинал с ASM Z80, вот сижу и думаю, плохо или хорошо. :-)
Вы смогли начать с ASM Z80, перепрыгнув Basic Z80?
А как вы ASM загружали?

P.S. Даже любопытно, как вы отмажетесь =)
Да какие отмазки. Из Basic Z80 достаточно было знать всего пару команд, писать код на нем совершенно не обязательно.
Из Basic Z80 достаточно было знать всего пару команд

Так там всего пару команд и было.
Википедия говорит, что there are 88 keywords in Sinclair BASIC.
Для загрузки было достаточно, емнип, load && run.
а как же usr?
Емнип, для запуска zeus оно не нужно было.
А отрицательно влияет, судя по Дейкстре. Снобизм на пустом месте. Замечали крутость «теплых ламповых» софтинок из 80-х? Их писали люди с мышлением, сформированным реальной жизнью, а не изуродованным «объектно-ориентированной парадигмой».
Математика — наука о численных и пространственных отношениях реального мира. Программирование — средство реализации управляющих и расчетных алгоритмов. Основанных на реальной физике, математике и МСФО.
А отрицательно влияет, судя по Дейкстре. Снобизм на пустом месте. Замечали крутость «теплых ламповых» софтинок из 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 было вполне нормальным.
goto 100
call 100

Если убрать нумерацию строк, то необходимо сразу ввести блоки. А в бейсике их просто не было. Поэтому не было никакого смысла менять goto на что-то, если структура оставалась неизменной.

Зато уже в QBasic (была даже русифицированная версия) можно было легко обучить студентов созданию программы с процедурами и функциями. А начать как легко: input "Hello, world!",a$. Поздороваться в ответ.

Дейкстра не про VB писал. А изначальный Васик был реально гнусен.
А на счет Си, действительно, те, кто долго и эффективно писал на Си, испытывают трудности даже с С++, не говоря уже о C# и Жабе. А вот с ЛИСПом у них никаких проблем. Но потом становится пофиг.
Мне, наверное повезло, потому что изучив работу с компом и программирование в восьмеричных кодах, я сразу приступил к изучению Ada. Никаких стереотипов не осталось. А насчет Скриптовых, то до сих пор жалею. что в браузерах поселился JS, а не более подходящий для этого Rexx.
Тут скорее разница не между бейсиком, си и плюсам, а самим подходом в написанию — разница между процедурным языком и ООП. Сам начинал с бейсика, потом писал на паскале и на си под микроконтроллеры, это развивает определённый стиль мышления, построения алгоритмов — процедурный, и переходить с него на ООП поначалу довольно сложно бывает.
Мы также знаем, что программисты часто тратят больше времени на исправление и рефакторинг имеющегося кода, чем на написание нового с нуля.


А такая теория — на мозг влияет не само программирование, а отладка и рефакторинг, которые занимают бОльшую часть времени.

Ведь именно отладка заставляет программиста критично относится к коду, и рассчитывать не на изначальную конструкцию, а именно на тесты/отладку, чтобы получить в конце концов результат?
А как с теми, кто начинал с подобного вот:
image
Да еще контролировал правильность набора команд по 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 уже бейсик прошивался.

Ну а реальное обучение программированию началось таки уже на работе, как я уже и писал.
Как-то наблюдал за программистами в общем рабочем пространстве, вывел критерий: если человек оставляет после себя общее рабочее место в том же виде в котором его застал, то скорее всего это толковый программист. Притом, если после него рабочее место в большем порядке чем до, то это скорее минус — склонен решать задачи которые перед ним не стоят.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий