Comments 44
Я бы не рекомендовал python как первый язык. Он местами слишком специфичный и потом у человека есть риск схлопотать python головного мозга -- ситуация когда другие языки кажутся сложными/неудобными, потому что "а я вот в python так делал и мне думать не надо было даже". Сам по себе он достаточно хорош, но мне кажется, взращивает плохие привычки, если выбирать его первым.
В статье я никого не призываю выбирать , те языки которые я указал, я полагался на статистику и расписывал про популярные языки, каждый человек сам вправе выбирать какой язык ему подойдет, исходя из его нужд и желания
Я вообще начинал с Basic и Asm, и ничего, плохих привычек не выработалось, goto не использую, хотя он в C# есть ))
Выбор первого языка программирования, как правило, не зависит от желания будущего программиста. Что преподают в учебном заведении, то и будет первым языком.
Выбор рабочего языка программирования также не всегда зависит от желания, если человек, конечно, не хочет посвятить всего себя фрилансу и только в той области, которая нравится.
Если человек идет в найм, то рабочий язык определяет работодатель. Мало что зависит от наших желаний.
"Первый язык" предполагает знакомство с int, float, string, if, while do и прочими for'ами. А тут предлагаются языки с порога в классы, объекты и функциональщину с динамической типизацией окунающие. Начинать со scratch'а, basic'a, pascal'я надо. С тех языков, которые для новичков и обучения новичков создавались, а не для создания серьезных продуктов.
Начинать со scratch'а
Замени на assembler. Новичкам выживать надо учится, правильный вариант по одной недели делать. А потом даже C++ будет казаться таким легким после ассемблера.
а что трудного/тяжелого в ассемблерах? разве что объем...
честно говоря согласен с Вами.
Добавлю - наверное, "трудно" то, что "все ассемблеры разные".
Принцип всё равно одинаковый. Просто кое у кого глаза разбегаются от обилия мнемоник операций.
Классический С лучше. Весь язык это десяток страниц документации. Хорошая книжка где все разжевали это сотня другая страниц.
Чтобы учить базовые штуки отлично подходит.
int, float, string, if, while do - это тема первого занятия, более там нечего объяснять. Начинать надо сразу с актуальных и серьезных продуктов, а не реанимировать артефакты прошлого столетия. Я бы рекомендовал еще Dart с его Flutter'ом
Вы переоцениваете скорость обучения программированию. Базовые конструкции и базовые алгоритмы это полгода обучения минимум. А то и год.
Если учиться со скоростью и качеством обычного ВУЗа, а не гнать по верхам на курсах вкатунов.
насчет "год на базовые конструкции" - это вы явно погорячились. Ну, разве что только в ПТУ..
Вы посмотрите стандартные вузовские планы обучения программированию. Что там преподается на первом семестре первого курса.
Для "непрограммистов" (инженеров) первый семестр (половина учебного года)- как раз "базовые конструкции и алгоритмы", для "программистов" - первые пара месяцев, дальше уже конкретика первого языка. Гуманитарии - те год тратят, но бессмысленно (не видел ни одного, научившегося чему-то именно там - бывают только самоучки)
Ну вот уже от первого занятия перешли к паре месяцев.
Я про любые технические специальности. Там везде программирование нужно.
Ну, про "первое занятие" говорил не я. Но даже в наши лохматые годы, когда в школах ОИВТ еще не было (1985) на базовые вещи (работа в RSX-11 и фортран, ибо инженегры) потратили не более половины первого семестра . А в нынешние времена и в школах что-то рассказывают, и компьютеры почти у каждого студента...
Я про любые технические специальности. Там везде программирование нужно.
объемы потребностей - разные. инструментарий разный.
Я с трудом представляю себе любого технаря которому не надо уметь код писать. Значит учить всех надо. Вопрос только в скорости и в конечном объеме обучения.
Рассчитывать на то что в школе чему-то научат такое себе. В топовых вузах с толпами олимпиадников и стобальников можно. В остальных лучше не надо.
Да легко. Не говоря о всяких ПГС-никах (промышленное и гражданское строительство), даже сокурсники, работающие по сути по профилю (радиоинженеры - электронщики) далеко не все что-нибудь за эти 30 с небольшим лет писали. Либо есть готовое, либо настраивается параметрически, либо заказывается. Кодят только эмбеддеры, да переметнувшиеся в программисты...
Рассчитывать на то что в школе чему-то научат такое себе.
В общем-то, я в курсе, что в ВУЗах теперь и русскому языку доучивают... Но в норме - есть "входное тестирование" (экзамены ли, егэ ли), и попавшая абитура должна входным требованиям соответствовать. А повторять школьную программу на бакланавриате... И так 4 года вместо 5...
"Не говоря о всяких ПГС-никах"
Вот ща обидно было. У нас, ПГСников, очень часто встречаются как минимум экселевские таблички для автоматизации нашей рутины. Конечно это не ООП на крестах, но Автокад или Ревит не просто так позволяют скрипты писать внутри себя. И эти функции достаточно активно используются. Да, созданием инструментов автоматизации не каждый ПГСник занимается, но таких довольно много, а пользующихся их трудами и того больше.
А чего обидного-то? Не всем нужно считать "неизвестное". А из тех, кому нужно считать - не всем нужно кодить. Все CADы закодены кем-то до вас и за вас. (это касается и ваших нанокадов/автокадов/арчикадов/компасов, и наших Протеусов/ИзиЕДА/Альтиумов). Даже возможностью написания пользовательских скриптов пользуется не так много пользователей. Вполне нормальная пирамида - не "хорошо", и не "плохо". Если ПГСник занимается в САПРе проектированием того, что он может посчитать вручную - прекрасно, за него другие специалисты (условно "программисты") сделали кучу работы, чтоб он мог сосредоточиться на своей (хотя теоретически он должен суметь если не "посчитать вручную", то хотя бы понимать, "как это посчитано").
Доводя до абсурда: да какие вы программисты, если сами себе компиляторы не делаете! Их сделали для вас Настоящие Программисты, а вы с их помощью какие-то там JSON-ы перекладываете в поте лица!
Написать хотя бы интерпретатор это стандартная учебная задача. Кто-то и компиляторы пишет. С llvm это вполне по силам студенту поумнее.
Вы это делаете каждый день, не так ли?
Написать даже компилятор для несложного языка не так сложно как кажется. DSL языки я делал. Они в проде сейчас работают. Полезно и правильно.
Очень сложно сделать хороший язык общего назначения. Который будет лучше уже существующих. Тут не то что студент, а группа профессионалов с научными степенями обычно не справляется. И это обычно не имеет смысла.
Писать еще один компилятор к существующему языку не в учебных целях просто нет смысла. Существующие компиляторы хороши.
Там выше был аргумент, что CAD-систему написал другой "настоящий" программист, чтобы ненастоящий писал для него простенькие скрипты.
Привожу аналогию: "настоящие" программисты написали компиляторы, на которых "ненастоящие" мы пишем скрипты для перекладывания JSON.
Доводя до абсурда: да какие вы программисты, если сами себе компиляторы не делаете!
Не. просто компиляторы сделали другие программисты. с другой специализацией. Но и тот, кто JSONы перекладывает, и те, кто CRUDы крутит, и тот, кто компиляторы пишет - программисты, с разной специализацией (и разными потребными навыками и объемами знаний)
Да, когда-то и компы сами паяли, и системный софт для них сами писали. С тех пор отрасль развилась и разрослась.
Извиняюсь за вмешательство в дискуссию колеги. Как минимум занимает два года для не подготовленных студентов. От года для подготовленных. В идеале как минимум три года для подготовки студентов.
Я вообще то и без курсов и без вузов за 3-4 месяца это выучил и мог уже писать хотя бы что-то.
У нас в школе препод провел забавный эксперимент, класса после 8, распечатал брошюру по синтаксису классического С, четыре часа на изучение, два часа на простейшую программу на бумаге :) в принципе, все справились. Правда, к тому времени мы уже года три на паскале что-то лабали
Pascal не создавался ни для новичков, ни для обучения. Это заблуждение.
Тот факт, что он стал образцом и удобным языком для обучения - это результат его удачной архитектуры.
А Вы программист на C++, Java или Python?
А Вы - сантехник ключом, вантузом или только подавать инструмент умеете?
Выбор первого языка программирования для изучения: как сделать правильный выбор?
Вот что удалось, так это заголовок. Он от хорошей теоретической статьи, а не от того, что воспоследовало.
Первый подразумевает второй, а то и третий, может быть и четвёртый. Поэтому решить какой язык будет первым рассматривая языки по одному - принципиально неверно. Так можно пытаться ответить на другой вопрос - каким языком овладевать в предположении что он будет единственным.
Для изучения не есть для выучивания или использования. Для изучения хороши Scheme и Lua...
Выбор - по определению решение задачи оптимизации, а таковая не существует без определения ограничений, поэтому любая статья написанная по такой схеме как эта - вредоносное шарлатанство. Сумел читатель абстрагироваться от связанного с выбором и просто прочитать супер общие и поверхностные слова по поводу языков - молодец, урона не получил. Остальные - ну не убереглись...
Интересно, что какие бы условия я ни придумывал, при наращивании объёмов вложенных усилий языки не выстраиваются в последовательность для изучения. Например, если ограничения - хочу что-то посчитать для себя не знаю что, не создавая приложений для распространения, то у меня получается так: совсем по дешёвке - Python, немного вложившись - Julia, вложившись средне - Dart, вложившись на продвинутом уровне - JavaScript + Julia, первый дан, майко. генин - JavaScript + Julia + Rust (единственный раз только добавление языка), четвёртый дан, гейко, джонин - Julia, Scheme (Racket), C++, JavaScript.
А если условия неизвестны или "не знаю" в них не желательно, то вопрос не в том, как выбрать язык, а в том, как почуствовать что выбранный язык пора бросать и начинать другой.
Сложность: поскольку одной из целей создания языка было упростить Java, синтаксис Kotlin — интуитивно понятный и лаконичный.

Может быть, перед тем как Вы (или ИИ) будете кому-то что то советовать, соблаговолите хотя бы, так, чисто для интереса, посмотреть как выглядит языки которые советуете.
Подскажу, это не Kotlin, это байткод JVM.
Ну да, кому-то первым, внезапно, может и MAX-Script стать. Сидит себе никого не трогает, пилит спрайты, и тут для изометрии камеру в 16 позиций надо для каждой модели выставить точнёхонько. Для трёх десятков сцен по 30 анимации в каждой. А потом ещё и новые текстуры подвезли в библиотеку материалов, иди там, ручками переставляй... И, после беглого чтения доков, несмелое «Select #Object...» как тут правильно выразились, бизнес решает, какой у тебя будет первый серьезный опыт ))
Думаю, что лучше "пощупать" базу разных языков, и выбрать для себя именно тот, который наиболее понравится в процессе знакомства, но тут главное выбрать для себя приличные мануалы
А почему у Котлина, скриншот байт кода, а не пример кода Котлина?
Выбор языка программирования для создание более трудных проектов: как сделать правильный выбор новичку?