Я не знаю, это мне так (не)везло, или в код-серватории всё-таки проблемы?
Это вам так не везло (что не исключает проблем в консерватории, конечно).
Например, у меня прямо сейчас на работе практикуется код-ревью, и оно работает. Если что-то непонятно - просят пояснить за код, если где-то криво написано - просят исправить (с объяснением, что не так по мнению ревьюера). При этом к мелочам не цепляются.
Впрочем, это у нас коллектив здоровый. Бывали залетные товарищи, которые из код-ревью умудрялись устроить цирк с конями, но они надолго не задерживались.
Также я регулярно поднимал эту тему на ретроспективах и планированиях спринтов. Мне казалось очень важным обратить внимание коллег на эту ситуацию, и я сильно удивлялся апатии с их стороны.
Типичная ошибка человека, не видящего всей картины. Я тоже такой. :)
Дело в том, что разработчик видит только свой "участок фронта" - код. Но код - это не самое главное в бизнесе. Главное - клиенты, договоренности, сроки, издержки, планы начальства, красивые цифры в отчете, подковерные интриги и т. п. Разработчики о таких материях имеют довольно смутное представление, и это понятно.
Пример из жизни:
Есть огромный проект с кучей легаси. В коде проекта полным-полно директив условной компиляции. Директив очень много (десятки тысяч) и расставлены они автоматически - скриптом. Разработчик уверен, что 95% этих директив не нужны и что их можно сократить. Разработчик на 100% прав, но его инициативы вежливо отклоняются.
Причина проста: продукт уже прошел этап тестирования заказчиком и вот-вот будет отгружен. Сроки уже согласованы, договоры подписаны. Изменение тысяч файлов означает, что все тестирование нужно проводить заново, сроки поедут, по договорам придется платить неустойки и т. п.
Пример второй:
Проект средних размеров, но юнит-тестов в нем практически нет. Инициативная группа товарищей (для определенности - двое) пытается внедрить культуру юнит-тестирования: заводят на рабочей машине CI-сервер, настраивают на нем билды и проверяют все коммиты. Если коммит ломает сборку - система рассылает "письма счастья".
Почему-то инициатива не встречает понимания у товарищей. Руководители вообще занимают позицию "ну вы, конечно, для себя свою систему используйте, но от других ничего требовать не надо".
А причина проста: руководство знает, что наверху проект уже считается "не взлетевшим" и дело идет к его закрытию. На умирающий проект нет смысла выделять новые ресурсы (официальный билд-сервер для CI, джиру для багов сборки и т. п.).
Я попросил своего руководителя привести мне конкретные примеры токсичности в моем поведении.
Во-от, вот оно. Разработчик думает, что его не понимают из-за каких-то его личных отклонений. На самом деле вопрос надо было ставить иначе: а в чем причина того, что инициативы по ликвидации техдолга встречают с такой прохладой? Может, проект вот-вот сдают? Может, мы и так по срокам не успеваем и нам дай бог основной функционал доделать к сдаче? Или это вообще делается специально - этакий задел на будущее? Ведь пока мы правим баги, команду не разгонят.
Оказывается, если не настаивать на своем мнении, то у коллеги не включается чувство противоречия,
Это называется софт-скиллс. Не нужно идти на конфликт там, где от этого нет никакой пользы. Поэтому в англоязычных странах используются очень мягкие формулировки - could we please и все такое.
Вопреки популярному здесь в сообществе мнению "работу работать нужно, а не тратить время на эти бесполезные вежливые расшаркивания",
Это вовсе не популярное мнение. У людей, работающих в международных компаниях, уже давно есть понимание важности всех этих "расшаркиваний". Но вообще в русскоязычном IT-сообществе дуболомят часто, это да. Неспроста оно считается токсичным среди иностранцев.
Редактор комментариев в новой версии глючный до ужаса:
Нельзя перепрыгивать курсором между абзацами при помощи стрелок вверх-вниз. Абзацы, по ходу, изолированы друг от друга. Причем иногда курсор вообще исчезает куда-то.
Абзац можно перетащить за "шеститочие" слева, но при этом вылезают прекрасные глюки: если нижний абзац перетащить наверх, то он не вставляется перед верхним, а заменяет его.
После того, как абзац "потаскаешь" по полю ввода, в нем почему-то перестает работать удаление: ни backspace, ни delete не работают.
Намудрили-то как... Я обычно делаю проще: захожу в очередной отдел, сканирую (глазами) список на предмет того, что мне здесь нужно купить, закупаюсь в удобном для себя порядке, помечаю купленное в списке (краешек надрываю напротив соответствующего пункта). Далее иду в следующий отдел и повторяю процедуру, пока все не закуплю.
Как правило, никаких дополнительных оптимизаций не надо: пока смотришь в список, и без генерации маршрутов примерно становится понятно, в какой отдел идти дальше. Да и вообще, в магазинах периодически выкладку меняют - что ж теперь, полдня сидеть координаты менять в программе? :)
Из технического обеспечения у меня есть термопринтер (списки в магазин печатать) и телеграм-бот (ему пишешь список - и он выводит его на термопринтер). Расходники копеечные, сам термопринтер на али стоит тыщи две (для ленты шириной 57 мм). Ну и все, собственно.
1. Заказчик хочет лучших из худших, т.к. денег нет.
2. HR дала отлуп трем пришедшим кандидатам на основании своих личных бзиков, не относящихся к делу: один излишне откровенен, второй осмелился продемонстрировать свой вокал, третий, видите ли, гедонист.
3. В соцсетях HR-ке разъяснили, что за такие деньги и без четких требований хороших кандидатов не сыскать. Сама-то она об этом, конечно, не догадывалась.
4. Для решения сей проблемы была написана методичка, в которой заказчикам и кандидатам разъяснялось, как именно нужно себя вести с HR, чтобы она смогла, наконец, исполнить свои прямые обязанности и свести заказчиков с кандидатами.
Просмотр новых комментариев превратился в непонятно что. Панель навигации по комментариям становится не видна, если перейти на саму статью. Новые комменты и раньше-то помечались как прочитанные по любому чиху, а сейчас их вообще фиг найдешь.
Отправка репортов об ошибках по ctrrl+enter стала глючной:
Раньше можно было нажать ctrl+enter и сразу начать писать; сейчас фокус ввода находится где-то непонятно где и нужно тыкать в поле ввода.
Раньше второе нажатие ctrl+enter сразу оправляло репорт; в новой версии это не работает и надо тыкать мышой в кнопку "отправить".
Раньше в репортах было ограничение на размер текста (идиотское, кмк, т. к. некоторые рекомендации довольно сложно упихать в 500 символов). Сейчас это ограничение тоже есть, но нигде не показывается. Можно набрать целую простынь рекомендаций, но при попытке отослать вылезает супер-информативное (*сарказм*) сообщение "Что-то пошло не так".
Контрпример — в некоторых школах одновременно учат несколько иностранных языков.
Так-то оно так, да есть нюансы:
— Язык программирования — это все-таки не язык человеческого общения.
— Учат все-таки не одновременно, а на разных уроках. Еще и учителя обычно разные. Это создает четкое разделение в мозгу, и ученики полностью «переключаются» на другой язык.
— учебная программа по каждому из языков составляется так, чтобы дать требуемый минимум учебных часов.
Если же давать сразу несколько языков программирования на одном уроке — они неминуемо перемешаются в незрелых умах. Да и времени на изучение может не хватить: вместо худо-бедно полного изучения минимума по одному ЯП будет скакание по верхам для двух.
Впрочем, это лично мой скептицизм. Может, не все так плохо, как мне кажется. :)
Почему ужаснее? Зачем чем-то мериться? Я вообще о другом.
В те времена дети (не все, естественно) сами хотели изучать программирование всех этих интересных штукенций. Потому что штукенции были чахленькие и без умения их программировать — неинтересные. Посему дети, которым было интересно возиться с компьютерами, довольно быстро осваивали бейсик, потом обнаруживали, что он очень медленный и шли дальше — в ассемблер или еще какие более быстрые языки. Я вот Форт на кассетах нашел, когда они наконец-то появились в моем городе, и очень он мне тогда понравился своей скоростью.
А основная мысль в том, что вы вспоминаете себя (самомотивированного юнца в другом времени) и ставите себя на место нынешних студентов. Но у них сейчас совсем другие мотивы к изучению программирования, и они не очень-то рвутся начинать изучение с низкоуровневых штук.
Но ведь ничего не мешает обучать одновременно и си, и питону, показывая, как те или иные синтаксические конструкции различаются от языка к языку.
Думаю, много что мешает.
Во-первых, обычно дают один язык на выбор (или один обязательный, второй факультативно). Это заложено в учебных планах и это спускается сверху из министерства. Два языка сразу могут посчитать ненужной самодеятельностью и перегруженность — а оно преподу надо?
Во-вторых, преподаватель должен сам понимать, что он преподает и зачем. Т.е. он сам должен хорошо знать эти два языка и понимать, зачем дает отличия между ними. Такое возможно в пределах одного вуза (и факультета) — энтузиасты есть. Но в масштабах всей страны это вряд ли осуществимо, у нас дефицит обучающих кадров и программирование местами преподают те, кто сам ни строчки не написал.
В-третьих, а вы уверены, что ученикам от этого будет нанесена непоправимая польза? Мне вот кажется, что многие их них в результате такого обучения будут путать синтаксические конструкции. Да и само обучение не затянется ли?
У меня другой опыт, в другое время. Сначала не программировал, потому что компьютеры еще вообще не продавались не теоретически прекрасно представлял как это делается по статьям в журнале «Юный техник», потом программировал на бейсике, потому что ничего другого на кассете не было, потом программировал на ассемблере, потому что удалось найти транслятор и потому что он позволял сделать диггера или пакмана, который работал быстро.
Вот именно: другой опыт и другое время. В то время компьютер был непонятным черным ящиком, не умеющим нихрена, а человек, умеющий программировать, был полубогом и повелителем машины. Сейчас компьютер все умеет из коробки: покупаешь готовенький, включаешь — и все, тычь мышой, ставь программы и наслаждайся.
Я вот тоже начинал очень похоже. Сначала программируемый калькулятор и программы из журнала «Наука и жизнь» (даже свою программу им отсылал — но было уже поздно, они как раз прекратили публиковать программы на ПМК и перешли к компьютерным). Потом заимел один из вариантов ПК8000 (аж целых 64 килобайта памяти!) — сам разобрался с тамошним бейсиком (писан по мотивам MSX Basic), потом на том бейсике написал свой ассемблер, используя таблицу мнемоник из бумажной инструкции… Методом научного тыка разобрался с перестановкой байт в операндах и со значением многих команд. Тут помогли статьи в «Юном технике», кстати. Потом переписал свой ассемблер на ассемблере (помнится, даже простенький строковый редактор к нему прикрутил). Жаль, что все это уже, скорее всего, не восстановить — я писал на бобинный магнитофон, который уже тогда дышал на ладан…
Да. так я к чему? Я к тому, что если исходить из моего жизненного опыта, достаточно подбросить школьнику какой-нибудь ардуино или распберри — и он самозабвенно начнет на нем писать программы сначала на питоне, потом на си, потом на ассемблере.
На практике же детям это все давно не интересно. А студентам, которые по идее должны уметь программировать, лучше все-таки давать язык, в котором не придется 90% времени бороться с «особенностями».
Думаю, дело не в падении нравов. Вам ненавязчиво намекают, что для сообщений об опечатках лучше использовать личные сообщения. Потому что если делать это в комментариях, то автор-то опечатку исправит, а комментарий останется и продолжит напоминать всем о том, чего нет.
Но уже в QBasic были функции, и учеников можно было учить писать более-менее приличный структурированный код. (Не призываю начинать с QBasic, если что.)
Он преподавал во Франции в начале-середине 80-х. Тогда там в ходу были микрокомпьютеры а-ля советский «микроша» с убогим классическим бейсиком. Впрочем, еще у них был какой-то свой язык с ключевыми словами на французском… нашел: LSE (Langage symbolique d'enseignement)/
Насчёт привычек и заморочек, мне кажется, это разве что у новичков заметно. Через год-два, старые привычки и стиль заменяются новыми.
Даже через пять лет безошибочно определяются. Разве что с джавистами чуть посложнее — они за это время уже достаточно наполучали по рукам за new без delete и научились пользоваться умными указателями. :)
Вообще-то нет. Мы говорим о том, какому языку учиться, если учишься сам и у тебя есть выбор: такому, который больше нравится и больше соответствует задачам, которые нравится решать.
Вы это сейчас говорите исходя из своего нынешнего опыта и ставите вопрос, фактически, повышения квалификации. А статья — о том, с какого языка начать изучение программирования.
А вот если взять сферического в вакууме неофита, у которого глаза горят заняться программированием — за какой язык ему схватиться, если он ни одного из них в глаза не видел? Из чего ему исходить, если он еще не знает, какие ему задачи нравится решать — ведь он еще не решал задачи программно? Спросишь такого — так он и игры писать хочет, и блокчейны, и сайты неземной красоты…
Что касается выбора первого ЯП для будущего профессионального программиста, то это вообще вопрос неважный. ЯП — вообще не проблема и изучаются очень легко, если это не Хаскель.
Ну как сказать… Есть чудесные языки (например, С++), в которых подводных граблей больше, чем блох на Бобике. А если их еще и изучать задом наперед, как это у нас принято (от С к С с классами), то изучение первого ЯП может закончиться той самой картинкой «буду проституткой».
Не соглашусь. Если есть склонность к программированию, зайти может достаточно широкий спектр языков.
А вот то, что язык, на котором учатся программированию, влияет на стиль — это довольно широко распространенное мнение. Причем это мнение разделяют как преподаватели, так и те, кто работает потом с людьми.
Например, Жак Арсак в своей книге «Программирование игр и головоломок» сокрушался, что ученики, изучавшие Бейсик, склонны потом на любом языке писать путаные программы безо всякой структуры и стиля. Просто потому, что Бейсик не требует никакой структуры, а «машина и так меня понимает».
Книжка, кстати, сама по себе интересная, даром что писана в 1980-х — посмотрел на обложку и вышибло ностальгическую слезу. :)
Бейсик — это, конечно, пример крайний. Но вот я, скажем, на работе ревьюил довольно большой объем кода, и уверенно могу определить, откуда пришел программист в С++. У бывших сишников свой очень узнаваемый стиль, у бывших джавистов — свои заморочки… А ежели человек, не приведи аллах, с функциональных языков начинал — о-о-о…
Сама идея о том, что можно что-то испортить начав не с того — она довольно абсурдна.
Как раз наоборот, идея очень здравая. У каждого языка программирования свои трудности, свой порог вхождения и кривая обучения. Скажем, пока студенты, изучающие С, набивают шишки на указателях и управлении памятью, студенты-питонисты уже вовсю пишут вполне сложные программы с практической ценностью. В результате многие выпускники-сишники вспоминают о программировании с ужасом и отвращением, а вот питонисты вполне себе уверены в себе (мое личное впечатление, не является аксиомой).
Ну и замечено, что первый язык программирования (точнее, первый «зашедший» человеку язык программирования) накладывает заметный отпечаток на стиль мышления и работы программиста в дальнейшем.
Это вам так не везло (что не исключает проблем в консерватории, конечно).
Например, у меня прямо сейчас на работе практикуется код-ревью, и оно работает. Если что-то непонятно - просят пояснить за код, если где-то криво написано - просят исправить (с объяснением, что не так по мнению ревьюера). При этом к мелочам не цепляются.
Впрочем, это у нас коллектив здоровый. Бывали залетные товарищи, которые из код-ревью умудрялись устроить цирк с конями, но они надолго не задерживались.
А я вот встречал таких. Возможно, они и не считали себя гениями, но манера общения у них была именно такая.
Почему вы такой токсичный?
Типичная ошибка человека, не видящего всей картины. Я тоже такой. :)
Дело в том, что разработчик видит только свой "участок фронта" - код. Но код - это не самое главное в бизнесе. Главное - клиенты, договоренности, сроки, издержки, планы начальства, красивые цифры в отчете, подковерные интриги и т. п. Разработчики о таких материях имеют довольно смутное представление, и это понятно.
Пример из жизни:
Есть огромный проект с кучей легаси. В коде проекта полным-полно директив условной компиляции. Директив очень много (десятки тысяч) и расставлены они автоматически - скриптом. Разработчик уверен, что 95% этих директив не нужны и что их можно сократить. Разработчик на 100% прав, но его инициативы вежливо отклоняются.
Причина проста: продукт уже прошел этап тестирования заказчиком и вот-вот будет отгружен. Сроки уже согласованы, договоры подписаны. Изменение тысяч файлов означает, что все тестирование нужно проводить заново, сроки поедут, по договорам придется платить неустойки и т. п.
Пример второй:
Проект средних размеров, но юнит-тестов в нем практически нет. Инициативная группа товарищей (для определенности - двое) пытается внедрить культуру юнит-тестирования: заводят на рабочей машине CI-сервер, настраивают на нем билды и проверяют все коммиты. Если коммит ломает сборку - система рассылает "письма счастья".
Почему-то инициатива не встречает понимания у товарищей. Руководители вообще занимают позицию "ну вы, конечно, для себя свою систему используйте, но от других ничего требовать не надо".
А причина проста: руководство знает, что наверху проект уже считается "не взлетевшим" и дело идет к его закрытию. На умирающий проект нет смысла выделять новые ресурсы (официальный билд-сервер для CI, джиру для багов сборки и т. п.).
Во-от, вот оно. Разработчик думает, что его не понимают из-за каких-то его личных отклонений. На самом деле вопрос надо было ставить иначе: а в чем причина того, что инициативы по ликвидации техдолга встречают с такой прохладой? Может, проект вот-вот сдают? Может, мы и так по срокам не успеваем и нам дай бог основной функционал доделать к сдаче? Или это вообще делается специально - этакий задел на будущее? Ведь пока мы правим баги, команду не разгонят.
Это называется софт-скиллс. Не нужно идти на конфликт там, где от этого нет никакой пользы. Поэтому в англоязычных странах используются очень мягкие формулировки - could we please и все такое.
Это вовсе не популярное мнение. У людей, работающих в международных компаниях, уже давно есть понимание важности всех этих "расшаркиваний". Но вообще в русскоязычном IT-сообществе дуболомят часто, это да. Неспроста оно считается токсичным среди иностранцев.
И с расширениями, и без работает одинаково.
Моя ошибка: не Ctrl+V, а Ctrl+Insert.
Самое забавное, что Ctrl+V вставляет нормально, а Ctrl+Insert - с обрамлением из HTML.
Ctrl+Insert:
Ctrl+V:
Виндовс 10, файрфокс.
Редактор комментариев в новой версии глючный до ужаса:
Нельзя перепрыгивать курсором между абзацами при помощи стрелок вверх-вниз. Абзацы, по ходу, изолированы друг от друга. Причем иногда курсор вообще исчезает куда-то.
Абзац можно перетащить за "шеститочие" слева, но при этом вылезают прекрасные глюки: если нижний абзац перетащить наверх, то он не вставляется перед верхним, а заменяет его.
После того, как абзац "потаскаешь" по полю ввода, в нем почему-то перестает работать удаление: ни backspace, ни delete не работают.
Намудрили-то как... Я обычно делаю проще: захожу в очередной отдел, сканирую (глазами) список на предмет того, что мне здесь нужно купить, закупаюсь в удобном для себя порядке, помечаю купленное в списке (краешек надрываю напротив соответствующего пункта). Далее иду в следующий отдел и повторяю процедуру, пока все не закуплю.
Как правило, никаких дополнительных оптимизаций не надо: пока смотришь в список, и без генерации маршрутов примерно становится понятно, в какой отдел идти дальше. Да и вообще, в магазинах периодически выкладку меняют - что ж теперь, полдня сидеть координаты менять в программе? :)
Из технического обеспечения у меня есть термопринтер (списки в магазин печатать) и телеграм-бот (ему пишешь список - и он выводит его на термопринтер). Расходники копеечные, сам термопринтер на али стоит тыщи две (для ленты шириной 57 мм). Ну и все, собственно.
Краткое изложение виршей:
1. Заказчик хочет лучших из худших, т.к. денег нет.
2. HR дала отлуп трем пришедшим кандидатам на основании своих личных бзиков, не относящихся к делу: один излишне откровенен, второй осмелился продемонстрировать свой вокал, третий, видите ли, гедонист.
3. В соцсетях HR-ке разъяснили, что за такие деньги и без четких требований хороших кандидатов не сыскать. Сама-то она об этом, конечно, не догадывалась.
4. Для решения сей проблемы была написана методичка, в которой заказчикам и кандидатам разъяснялось, как именно нужно себя вести с HR, чтобы она смогла, наконец, исполнить свои прямые обязанности и свести заказчиков с кандидатами.
5. ...
6. PROFIT!
Просмотр новых комментариев превратился в непонятно что. Панель навигации по комментариям становится не видна, если перейти на саму статью. Новые комменты и раньше-то помечались как прочитанные по любому чиху, а сейчас их вообще фиг найдешь.
Отправка репортов об ошибках по ctrrl+enter стала глючной:
Раньше можно было нажать ctrl+enter и сразу начать писать; сейчас фокус ввода находится где-то непонятно где и нужно тыкать в поле ввода.
Раньше второе нажатие ctrl+enter сразу оправляло репорт; в новой версии это не работает и надо тыкать мышой в кнопку "отправить".
Раньше в репортах было ограничение на размер текста (идиотское, кмк, т. к. некоторые рекомендации довольно сложно упихать в 500 символов). Сейчас это ограничение тоже есть, но нигде не показывается. Можно набрать целую простынь рекомендаций, но при попытке отослать вылезает супер-информативное (*сарказм*) сообщение "Что-то пошло не так".
А вот это что за странная всплывающая подсказка?
Так-то оно так, да есть нюансы:
— Язык программирования — это все-таки не язык человеческого общения.
— Учат все-таки не одновременно, а на разных уроках. Еще и учителя обычно разные. Это создает четкое разделение в мозгу, и ученики полностью «переключаются» на другой язык.
— учебная программа по каждому из языков составляется так, чтобы дать требуемый минимум учебных часов.
Если же давать сразу несколько языков программирования на одном уроке — они неминуемо перемешаются в незрелых умах. Да и времени на изучение может не хватить: вместо худо-бедно полного изучения минимума по одному ЯП будет скакание по верхам для двух.
Впрочем, это лично мой скептицизм. Может, не все так плохо, как мне кажется. :)
В те времена дети (не все, естественно) сами хотели изучать программирование всех этих интересных штукенций. Потому что штукенции были чахленькие и без умения их программировать — неинтересные. Посему дети, которым было интересно возиться с компьютерами, довольно быстро осваивали бейсик, потом обнаруживали, что он очень медленный и шли дальше — в ассемблер или еще какие более быстрые языки. Я вот Форт на кассетах нашел, когда они наконец-то появились в моем городе, и очень он мне тогда понравился своей скоростью.
А основная мысль в том, что вы вспоминаете себя (самомотивированного юнца в другом времени) и ставите себя на место нынешних студентов. Но у них сейчас совсем другие мотивы к изучению программирования, и они не очень-то рвутся начинать изучение с низкоуровневых штук.
Думаю, много что мешает.
Во-первых, обычно дают один язык на выбор (или один обязательный, второй факультативно). Это заложено в учебных планах и это спускается сверху из министерства. Два языка сразу могут посчитать ненужной самодеятельностью и перегруженность — а оно преподу надо?
Во-вторых, преподаватель должен сам понимать, что он преподает и зачем. Т.е. он сам должен хорошо знать эти два языка и понимать, зачем дает отличия между ними. Такое возможно в пределах одного вуза (и факультета) — энтузиасты есть. Но в масштабах всей страны это вряд ли осуществимо, у нас дефицит обучающих кадров и программирование местами преподают те, кто сам ни строчки не написал.
В-третьих, а вы уверены, что ученикам от этого будет нанесена непоправимая польза? Мне вот кажется, что многие их них в результате такого обучения будут путать синтаксические конструкции. Да и само обучение не затянется ли?
Вот именно: другой опыт и другое время. В то время компьютер был непонятным черным ящиком, не умеющим нихрена, а человек, умеющий программировать, был полубогом и повелителем машины. Сейчас компьютер все умеет из коробки: покупаешь готовенький, включаешь — и все, тычь мышой, ставь программы и наслаждайся.
Я вот тоже начинал очень похоже. Сначала программируемый калькулятор и программы из журнала «Наука и жизнь» (даже свою программу им отсылал — но было уже поздно, они как раз прекратили публиковать программы на ПМК и перешли к компьютерным). Потом заимел один из вариантов ПК8000 (аж целых 64 килобайта памяти!) — сам разобрался с тамошним бейсиком (писан по мотивам MSX Basic), потом на том бейсике написал свой ассемблер, используя таблицу мнемоник из бумажной инструкции… Методом научного тыка разобрался с перестановкой байт в операндах и со значением многих команд. Тут помогли статьи в «Юном технике», кстати. Потом переписал свой ассемблер на ассемблере (помнится, даже простенький строковый редактор к нему прикрутил). Жаль, что все это уже, скорее всего, не восстановить — я писал на бобинный магнитофон, который уже тогда дышал на ладан…
Да. так я к чему? Я к тому, что если исходить из моего жизненного опыта, достаточно подбросить школьнику какой-нибудь ардуино или распберри — и он самозабвенно начнет на нем писать программы сначала на питоне, потом на си, потом на ассемблере.
На практике же детям это все давно не интересно. А студентам, которые по идее должны уметь программировать, лучше все-таки давать язык, в котором не придется 90% времени бороться с «особенностями».
Он преподавал во Франции в начале-середине 80-х. Тогда там в ходу были микрокомпьютеры а-ля советский «микроша» с убогим классическим бейсиком. Впрочем, еще у них был какой-то свой язык с ключевыми словами на французском… нашел: LSE (Langage symbolique d'enseignement)/
Даже через пять лет безошибочно определяются. Разве что с джавистами чуть посложнее — они за это время уже достаточно наполучали по рукам за new без delete и научились пользоваться умными указателями. :)
Вы это сейчас говорите исходя из своего нынешнего опыта и ставите вопрос, фактически, повышения квалификации. А статья — о том, с какого языка начать изучение программирования.
А вот если взять сферического в вакууме неофита, у которого глаза горят заняться программированием — за какой язык ему схватиться, если он ни одного из них в глаза не видел? Из чего ему исходить, если он еще не знает, какие ему задачи нравится решать — ведь он еще не решал задачи программно? Спросишь такого — так он и игры писать хочет, и блокчейны, и сайты неземной красоты…
Ну как сказать… Есть чудесные языки (например, С++), в которых подводных граблей больше, чем блох на Бобике. А если их еще и изучать задом наперед, как это у нас принято (от С к С с классами), то изучение первого ЯП может закончиться той самой картинкой «буду проституткой».
А вот то, что язык, на котором учатся программированию, влияет на стиль — это довольно широко распространенное мнение. Причем это мнение разделяют как преподаватели, так и те, кто работает потом с людьми.
Например, Жак Арсак в своей книге «Программирование игр и головоломок» сокрушался, что ученики, изучавшие Бейсик, склонны потом на любом языке писать путаные программы безо всякой структуры и стиля. Просто потому, что Бейсик не требует никакой структуры, а «машина и так меня понимает».
Книжка, кстати, сама по себе интересная, даром что писана в 1980-х — посмотрел на обложку и вышибло ностальгическую слезу. :)
Бейсик — это, конечно, пример крайний. Но вот я, скажем, на работе ревьюил довольно большой объем кода, и уверенно могу определить, откуда пришел программист в С++. У бывших сишников свой очень узнаваемый стиль, у бывших джавистов — свои заморочки… А ежели человек, не приведи аллах, с функциональных языков начинал — о-о-о…
Ммм? Неэффективное обучение == недостаточно уверенные знания и отсутствие уверенности в своем коде == никакой программист.
Мы говорим о том, какому языку учить неопытных студентов, а не о выборе языков профессиональным программистом.
Как раз наоборот, идея очень здравая. У каждого языка программирования свои трудности, свой порог вхождения и кривая обучения. Скажем, пока студенты, изучающие С, набивают шишки на указателях и управлении памятью, студенты-питонисты уже вовсю пишут вполне сложные программы с практической ценностью. В результате многие выпускники-сишники вспоминают о программировании с ужасом и отвращением, а вот питонисты вполне себе уверены в себе (мое личное впечатление, не является аксиомой).
Ну и замечено, что первый язык программирования (точнее, первый «зашедший» человеку язык программирования) накладывает заметный отпечаток на стиль мышления и работы программиста в дальнейшем.