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

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

имхо ничего лучше бейсика и паскаля не придумали. Пока начинающему объяснишь про классы объекты статические функции, желание осваивать сильно уменьшается, а тут написал пару строк и уже можно что-то вывести на экран, посчитать — самый фан от процесса. А если распробуют, то там уже выбирать в какую сторону смотреть.

А зачем совсем начинающему объяснять про классы и объкты сразу? просто все будет делать в мейн или статик ф-циях (просто запомнить этот кийворд). А ООП все равно придется объяснять.

Чтобы "что-то вывести на экран, посчитать" не надо объяснять про ООП и всякие статики. Нужно просто сказать: "здесь напишите static". А объяснения сделайте позже, в следующий раз.

Потому-что неизбежно возникнут вопросы: А что если не писать? А если написать в другом месте? и т.д.
Ведь это загадка! А каждая загадка по-своему притягательна. Появляется ощущение, что в инструменте есть много возможностей, ведь ключевое слово что-то специальное означает, какую-то крутую возможность даёт. Это мотивирует (=
К таким непонятным вещам относятся как к какой-то магии, которую нужно тупо запомнить.
По моему опыту — как раз наоборот, это сильно демотивирует тех, кто привык понимать, что делает, а не заучивать.
Для новичка программирование — сплошь необъятная магия из API стандартной библиотеки и синтаксических конструкций. Три-четыре ключевых слова в начале — это капля в море, едва ли кого-то смутит. Это непонимание не стопорит обучение.

«Те, кто привык понимать» обычно привыкли разбираться — вооружась гуглом начнуть непонятное расследовать, а не будут сидеть и ныть о том, как всё сложно. Тем более, что все ответы — в первых трех ссылках поисковика.
Для новичка программирование — сплошь необъятная магия из API стандартной библиотеки и синтаксических конструкций.

Вовсе нет.
При правильном объяснении там нет никакой магии. Хотите вывести что-то на консоль — вот есть библиотека для работы с консолью, подключается вот так, там есть такие-то и такие-то функции. Если интересно — вот справка. Мы пока будем пользоваться этим и этим.

Синтаксические конструкции объясняются тоже далеко не все сразу. Сначала — линейное программирование, потом ветвления, циклы, функции, и уже потом — классы.

Три-четыре ключевых слова в начале — это капля в море, едва ли кого-то смутит. Это непонимание не стопорит обучение.

Для определенной категории учеников (подчеркиваю: для определенной) — стопорит очень сильно. Скажем, в том же питоне можно написать хэлловорлд и тут же, построчно и посимвольно, объяснить ученикам, что здесь написано и для чего это нужно.
В джаве так не получится. В джаве придется или говорить, что «это магия, не обращайте внимания, это нужно просто скопипастить, чтобы все заработало», или же начинать втолковывать про классы, ООП и чем статические функции отличаются от нестатических.

«Те, кто привык понимать» обычно привыкли разбираться — вооружась гуглом начнуть непонятное расследовать, а не будут сидеть и ныть о том, как всё сложно. Тем более, что все ответы — в первых трех ссылках поисковика.

Вот оно как все просто-то, оказывается! Просто ученики должны быть замотивированы и должны учиться по гуглу. :)))
То есть, если я вас правильно понял, ученик должен:
— прийти домой с первого занятия, открыть гугл
— изучить ООП (что такое класс)
— изучить модификаторы доступа (и почему нужен public)
— изучить статические функции класса vs виртуальные
— получить просветление и идти спать.
Дело за малым: найти таких мотивированных учеников. Большинству-то и на занятиях учиться лень, не то что дома по гуглу.
Мы пока будем пользоваться этим и этим.

Знаете, я встречал преподавателей, которые ограничивали доступ учеников к средствам, которые «мы еще не проходили». Это очень и очень порочная практика, которая как раз губит мотивацию ученика по очевидным причинам, зато очень упрощает работу преподавателя.

Для определенной категории учеников (подчеркиваю: для определенной) — стопорит очень сильно.

Мы говорим о какой-то странной категории учеников, которые по какой-то причине должны учить программирование, но не способны ориентироваться по обрывочной информации и учить этому мы не имеем права. Если это ребенок, то Java для него может быть сложна, но вряд ли обсуждаемая причина будет единственной. Но взрослому человеку это не должно быть проблемой, иначе самостоятельно искать ответы на вопросы он просто не сможет. А это буквально крест на карьере в любой сфере интеллектуального труда. Хочешь расти быстрее — ломай себя, учись учиться.

если я вас правильно понял, ученик должен

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

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

Просто ученики должны быть замотивированы и должны учиться по гуглу.

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

Большинству-то и на занятиях учиться лень, не то что дома по гуглу.

Зачем учить тех, кто не хочет учиться? Это же совсем не языков проблема. Либо аудитория людей, которым это даром не упёрлось, либо методика такая, что глаза у любого погаснут.

По моему скромному мнению, самое главное — это желание. Не боги горшки обжигают, а программирование — это не та область, где для старта нужны связи, деньги, удача или гениальность. Достаточно желания, времени и доступа в интернет. Тем временем, сотни тысяч людей даже сегодня становятся программистами, начиная с паскаля, VB6/QBASIC, древней версии C++, где-то с помощью, а где-то и вопреки. Потому что им просто нравится изучать программирование.

Но если не будет желания, то вы никогда не найдете подходящего языка.
Знаете, я встречал преподавателей, которые ограничивали доступ учеников к средствам, которые «мы еще не проходили». Это очень и очень порочная практика, которая как раз губит мотивацию ученика по очевидным причинам, зато очень упрощает работу преподавателя.

Разве я где-то говорил, что преподаватель должен ограничивать доступ к средствам? Вовсе нет. Я имел в виду, что объяснять подробно всю системную библиотеку, функция за функцией, преподаватель не должен — это пустая трата времени и сил. Особенно тогда, когда изучаются совсем другие темы.

Мы говорим о какой-то странной категории учеников, которые по какой-то причине должны учить программирование, но не способны ориентироваться по обрывочной информации и учить этому мы не имеем права.

Выделенное вы, я так понимаю, мне приписываете? Так вот, я этого не говорил. Собственно, я и про остальное упомянутое не говорил («ориентироваться по обрывочной информации»).
Если вы не понимаете, о какой категории я веду речь, так ведь можно же просто спросить, не так ли? Зачем выдумывать какие-то странные критерии и приписывать их мне?

Есть ученики, которые предпочитают заучивать разрозненную информацию, и есть те, кто пытается понять общие принципы и увязать их в какую-то систему. Вот про вторую категорию я и говорю: когда их просто заставляют заучить некую «магию» без объяснений, это может их сильно демотивировать. Многое тут зависит от подачи материала преподавателем: хороший преподаватель сгладит негативный эффект.

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

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

Любознательный ученик задает вопросы и будет в поиске ответов на свои вопросы теребить преподавателя или гугол,…
(скип)
Если ученик этого делать не будет желать, то смена языка никак не поможет и высот в учении он не добьется (по крайней мере до тех пор, пока что-то не изменится).

Черно-белый подход, понимаю. Ученик или активен и любознателен, или пассивен, безволен и нафиг не нужен — отчислить без раздумий.

К сожалению, жизнь гораздо разнообразнее. На одного активного ученика приходится десяток-другой «полуактивных» — тех, кто не будет сам что-то искать, если ему не интересно. Но есть хорошая новость: многие из них могут стать активными, если им станет интересно. :)

Зачем учить тех, кто не хочет учиться?

Хороший вопрос.
Дело в том, что программирование в том или ином виде есть в программе множества вузовских специальностей. Многие из них вообще мало связаны с айти — технологи, например. Понятно, что для студента эта дисциплина — далеко не основная, свою жизнь он с ней не связывает, а следовательно, ожидать от него неугасимого энтузиазма, любопытства и гугления не очень разумно.
Про школу я вообще молчу. В старших класса вполне могут быть занятия по программированию, но ожидать от основной массы учеников неземной активности не стоит. Это в конце 1980-х уметь писать программы на компьютере было мечтой советского школьника. Сейчас энтузиазм поутих. :)

По моему скромному мнению, самое главное — это желание.

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

Но если не будет желания, то вы никогда не найдете подходящего языка.

Вы говорите о желании изучать как о неизменном качестве ученика.
Я говорю о том, что желание изучать предмет может как появиться, так и угаснуть. И, к сожалению, сам был свидетелем того, как неудачно выбранный язык программирования плюс нежелание преподавателя разъяснять мутные детали — намертво отбивали желание учиться.
Разве я где-то говорил, что преподаватель должен ограничивать доступ к средствам?

Выделенное вы, я так понимаю, мне приписываете?

Вы утверждаете, что некоторым ученики разобраться не смогут, а мои предложения их этому обучить вы отвергаете. По сути — да.

когда их просто заставляют заучить некую «магию» без объяснений, это может их сильно демотивировать.

Вы всегда можете давать ссылку, где эта магия раскрывается. Тот, кото это останавливало удовлетворил бы интерес.

ученики и студенты далеко не всегда точно знают, чего хотят.

Это проблемы воспитания и ограниченности кругозора (вклад в который в немалой степени дают учителя, проводя за ручку и уберегая от трудностей).

Именно поэтому я и говорю, что наличие магических строчек, которые никак не объясняются — это не очень хорошо.

Программа должна просто работать. Ученик должен понять, что он управляет ее работой. Очевидно, что от ключевых слов это не зависит для хэловорда, важен алгоритм и те примеры, которые дают ученику: «Повторяй за мной, потом попробуй внести изменения и поэкспериментировать». Поэтому я и говорю, что обучение это не стопорит и не сбивает мотивацию.

Ученик или активен и любознателен, или пассивен, безволен и нафиг не нужен — отчислить без раздумий.

На самом деле это разумный подход. Иначе получается как в реальной жизни: преподаватель ни бестолкового не научит и студент «с горящими глазами» демотивирован бесполезными занятиями, программу которых он уже далеко обогнал.

Дело в том, что программирование в том или ином виде есть в программе множества вузовских специальностей.

Это не ответ на вопрос, вы описываете обстоятельства.

сам был свидетелем того, как неудачно выбранный язык программирования плюс нежелание преподавателя разъяснять мутные детали

Готов поспорить, что удачно выбранный язык никак не перекроет нежелание преподавателя качественно трудиться. Ставка на то, что менее мотивированный студент сам сможет разобраться. Так с болезнью мы тут боремся или с симптомом?
Вы утверждаете, что некоторым ученики разобраться не смогут, а мои предложения их этому обучить вы отвергаете. По сути — да.

Где я утверждал, что ученики разобраться не смогут — нельзя ли точную цитату? Не захотят — это да, вполне.
И где это я отвергал ваши предложения их обучить — тоже с цитатой, пожалуйста.

Вы всегда можете давать ссылку, где эта магия раскрывается. Тот, кото это останавливало удовлетворил бы интерес.

Вы ведете речь об идеальном мире, где ученики хотят учиться, а преподаватель точно понимает сложности преподаваемого предмета и заранее стелит соломку.
Я веду речь о мире реальном, где ученики вовсе не так яро мотивированы и где преподаватель частенько сам не очень хорошо ориентируется в тонкостях своего предмета.
Вот между ногами и разница (ц).

Это проблемы воспитания и ограниченности кругозора (вклад в который в немалой степени дают учителя, проводя за ручку и уберегая от трудностей).

Эвона как вы лихо ставите диагнозы системе образования. :)

Программа должна просто работать. Ученик должен понять, что он управляет ее работой. Очевидно, что от ключевых слов это не зависит для хэловорда, важен алгоритм и те примеры, которые дают ученику:

Кому очевидно? Вам? Мне вот не очевидно ни разу.
Если классический хэлловорлд вместо одной строчки занимает десять (из которых девять — магический бойлерплейт), то порог вхождения для неподготовленного ученика выше. Мне вот такое очевидно — о чем я, собственно, и сказал в первом сообщении.

На самом деле это разумный подход. Иначе получается как в реальной жизни: преподаватель ни бестолкового не научит и студент «с горящими глазами» демотивирован бесполезными занятиями, программу которых он уже далеко обогнал.

Подход, может, и разумный, но система образования у нас построена по-другому. Можно сколько угодно рассуждать, что в идеальном черно-белом мире нет никакой разницы, какой обучающий язык выбрать: питон, джаву, паскаль или ассемблер. В реальном мире разница все-таки есть, хоть и не настолько большая.

Это не ответ на вопрос, вы описываете обстоятельства.

Да.
Потому что я — не государство, чтобы давать вам компетентный ответ на вопрос «зачем учить всех пришедших в вуз».

Ставка на то, что менее мотивированный студент сам сможет разобраться. Так с болезнью мы тут боремся или с симптомом?

Да, ставка именно на это (плюс поправка на то, что преподаватель тоже неидеален).
Насчет того, с чем вы боретесь — я, честно говоря, затрудняюсь ответить. Я вам свою точку зрения высказал.
Где я утверждал, что ученики разобраться не смогут

Читайте везде, где упоминается особая категория учеников, которым это не подходит.

Я веду речь о мире реальном, где ученики вовсе не так яро мотивированы и где преподаватель частенько сам не очень хорошо ориентируется в тонкостях своего предмета.

Я говорю о том, как это делать нужно максимально продуктивно, с моей точки зрения.
Вы в своей разноцветной реальности забываете о том, что идеальных языков, которые чудесным образом решат все проблемы, не бывает.

Эвона как вы лихо ставите диагнозы системе образования.

Не обобщайте, даже в существующей системе образования встречаются прекрасные кадры.

Если классический хэлловорлд вместо одной строчки занимает десять (из которых девять — магический бойлерплейт), то порог вхождения для неподготовленного ученика выше.

У вас подопытный то расширяется до неподготовленного ученика, то сжимается до «определенной категории». Определитесь уж.
Строки, которые ни на что ощутимо не влияют, не препятствуют обучению.

система образования у нас построена по-другому.

Плохо, могло бы быть лучше. Дело тут совсем не в языках.

с чем вы боретесь — я, честно говоря, затрудняюсь ответить.

Нет нужды, такой вопрос не ставился.
Я говорю о том, как это делать нужно максимально продуктивно, с моей точки зрения.

А ваша точка зрения подтверждена каким-либо практическим опытом преподавания, или так — плод абстрактных рассуждений? Что-то мне подсказывает, что второе.

У вас подопытный то расширяется до неподготовленного ученика, то сжимается до «определенной категории». Определитесь уж.

Ничто ни во что не расширяется и не сужается — это два пересекающихся множества.
Речь шла о начальном этапе обучения — отсюда «неподготовленный ученик».
Речь шла о тех, кто берет не зубрежкой, а поиском системы в знаниях — отсюда «определенная категория».

Плохо, могло бы быть лучше. Дело тут совсем не в языках.

Так что же вы сюда-то пишете? Пишите сразу в Министерство образования, пусть исправляются. :)

На сем позвольте откланяться — я вам свою позицию объяснил уже несколько раз, а читать в десятый раз ваше «не, ну не понял» я сегодня не в настроении.
Пожалуй, можно было завершить разговор по-английски, без этой грязи с переходом на личности, я бы не обиделся. Всего доброго!
Python лучше паскаля и бейсика. Учить мёртвым языкам это путь российских универов, и это печально.
Какие «такие» питонисты?
А про быдлокод… ну чот хз, это весьма странное утверждение. Вам бы посмотреть на мой код пятнадцатилетней давности на паскале, когда я не знал ещё про циклы и организовал интерактивный интерфейс в консольке на goto. Вот где был быдлокод:)
Есть подозрение, что на питоне это было бы еще хуже в перспективе
%) Ну ок
Я бы тоже усомнился в профессионализме, если бы посмотрел, как финансируются и управляются ВУЗы в России, как эмигрируют учёные, преподаватели и т. д. Языки программирования к этому не имеют отношения.
И внезапно правильно делают. Какое вообще отношение первый язык имеет к карьерным перспективам и популярности языка? Если вы в универе на первом курсе полгода учили Pascal, не означает, что вы теперь всю жизнь только на нем и обязаны программировать. Это язык для изучения основ программирования и для этой цели он хорошо подходит. И я даже затрудняюсь назвать язык, который подходит лучше. Разве что Си, но там гораздо проще выстрелить себе в ногу. Python, JS и прочие современные языки безусловно хороши, но как с их помощью, например, объяснять арифметику указателей, работу с памятью и прочее?
Для основ программирования, основных структур данных и алгоритмов Python подходит. Для изучения арифметики указателей и работы с памятью лучше Си ещё ничего не придумали. Насчёт «выстрелить в ногу» — это(и избежание этого) как раз и есть цель изучения указателей и работы с памятью в стиле Си.

Кроме того, на Python можно писать сразу реальные вещи, что-то для веба или десктопа, даже выступать на олимпиадах школьного(не международного) уровня.
Вторым языком можно брать Си, побыть немного ближе к железу. Между ними ещё можно воткнуть практику на каком-нибудь простеньком ассемблере, чтобы переход на Си был поприятнее. Си как первый язык не годится совсем, чтобы на нём Hello world написать, надо столько магии применить, что я даже не знаю, что может быть хуже.
Брать ли после Си С++ — вопрос, на мой взгляд, открытый. Для олимпиад — брать. Для общего развития — вряд ли. Лучше дальше взять какой-нибудь нормальный язык(Java, C#, Kotlin). После — что-нибудь функциональное.
То, что в приводите в качестве примера это уже не основы. Когда я учился (в далеко не самом топовом российском ВУЗе) у нас Pascal был только первый семестр (вроде) бы и это было что-то типа краш-курса для людей, которые до этого никогда в жизни не программировали (и на удивление их было не так уж и мало) и понятия не имеют что такое переменная, константа, функция, какие бывают типы данных и пр. Для этого Pascal с его четкой структурой как раз хорошо подходит. Лабы при этом можно было сдавать и на C. Потом было введение в ООП на Java. Сообественно, и все — больше никаких особых ограничений не было, в рамках других курсов лабы можно было хоть на Brainfuck делать. Я как раз делал часть на Python, часть — на C++/Qt. И это было почти 20 лет назад, сомневаюсь, что с тех пор в этом плане ситуация стала сильно хуже.

Да в смысле не основы. Как раз основы и есть. У нас в МГУ тоже был Паскаль. Изучали на нём алгоритмы, писали сортировки, деревья (Исходник АВЛ-дерева у меня до сих пор есть), графы, численные методы. Да, язык хороший для обучения, но потом его знание никакой пользы не несёт. И всё то же самое можно было бы писать на питоне, и это в дальнейшем было бы сильно полезнее, имхо.

Возможно, если давать актуальный язык, то потом люди смогут на нём автоматизироваь типовые задачки. На том же паскале это намного сложнее, чем на питоне.
Но это моё предположение, у самого первым был паскаль, особо не жалею.

Где паскаль мертвый? Цветет и пахнет. На днях очередная версия Delphi вышла как раз:

10.3 Release 3 is here!

Enjoy Delphi Android 64-bit Support, RAD Server Docker Deployment, And Much More!

We are pleased to announce the General Availability of RAD Studio 10.3 Release 3 (10.3.3). 10.3.3 expands upon 10.3.2 features, including support for Delphi Android 64-bit, iOS 13 and macOS Catalina (Delphi), RAD Server Linux enhancements and much more. Delphi 10.3.3, C++Builder 10.3.3 and RAD Studio 10.3.3 are available to download to any active Update Subscription customer.

NEW in 10.3.3

10.3.3 includes the following key new features:

● Delphi Android 64-bit Support
● iOS 13 and macOS Catalina (Delphi) Support
● RAD Server Docker Deployment
● Enterprise Connectors in Enterprise & Architect Edition
● And Much More!!!
Делфи это не паскаль, официально.
И уж вот что-что, а его точно изучать не надо.
Паскали тоже разные бывают. Например:
pascalabc.net

Оптимальный вариант сейчас для первого языка — Julia. Простая, современная, без ООП, но с типизацией. При этом синтаксически гибкая и быстрая в исполнении. Самое замечательное то, что на Julia очень легко учить алгоритмам. Хочешь — сортировку пиши, хочешь — кластеризацию векторов, хочешь — операции над тензорами. И всё чисто на Julia. И это не код "только для демонстрации", как в интеграционных языках, а код, который можно реально использовать. Для школьников и студентов она хороша тем, что любые расчётно-иллюстративные работы могут быть сделаны именно на Julia. Причём, переход с неё на низкоуровневые языки не будет вызывать когнитивный диссонанс, как в случае чистых интеграционных языков в качестве первого.

Есть чудесный и довольно уже старый Processing, который относится к Яве почти как Ардуино скетчи к плюсам. Т.е. позволяет быстро и без углубления в объекты что-то рисовать, двигать, управлять мышой и т.д., со временем плавно расширяясь до полного ява-синтаксиса

На мой взгляд Java отличный ЯП для обучения, единственный косяк, который ломает мозг новичкам — это генерики с отдельными типами-клонами для примитивных типов — придется сразу грузить про кучу, стек и боксинг (напрмер в C# это объяснять бы не пришлось из-за refined generics).

единственный косяк, который ломает мозг новичкам

А как же маниакальная страсть к именованию неймспейсов, так что необходимо объявлять класс в самом первом хеловорлде? «Сначала запомните этот бойлерплейт, про классы узнаете как-нибудь потом» − это просто краеугольный камень в обучении Java как первому ЯП. Мне кажется, трудно придумать что-то более мозголомное.

А как насчёт отсутствия беззнаковых целых? Знаковый byte разве мозг не ломает?
Без боксинга вполне можно обойтись поначалу, если использовать только примитивы (то есть так и делают, если посмотреть программы курсов каких-нибудь). А, чисто теоретически, можно обойтись и без объявления классов для «Hello World». Можно попробовать использовать JShell snippets. В IDEA есть поддержка jshell и классы там не надо объявлять. Единственно что без обращения к System.out.println не обойтись )
Я имею в виду чисто для обучения синтаксису, управляющим конструкциям, циклам и т.п. Понятно что интернет-магазин так не получиться написать.
НЛО прилетело и опубликовало эту надпись здесь
c# лучше по всем пунктам
Я сам Java разработчик по большей части, но такая постановка вопроса меня смущает. Для начинающих? Да нифига. начинающим лучше груви, котлин, в общем что-то немного попроще и поудобнее. При правильном подходе я бы даже скалу взял (но где взять ментора с правильным подходом — вопрос сложный).

Брать ли язык, работающий на JVM? Ну на мой взгляд — да, потому что скажем с подключением зависимостей из репозиториев есть ряд явных преимуществ, это делать просто, и не нужно писать свои велосипеды — готовых навалом.

Брать ли вместо Java скажем c#? Не исключаю — смотря чего вы хотите в итоге добиться. Экосистема .Net сопоставима, где-то даже лучше, другие языки типа F# в ней тоже есть, стоит посмотреть и в эту сторону.
По-моему, начинать изучение программирования с Java — плохая идея. Начинать программировать надо с того, что даёт быстрый результат твоей работы. Конечно, java будет проще и легче в обучении, чем тот-же C++, но начинать лучше всё же с Javascript или Python. Там меньше ООП, которое по-началу не совсем понятно, нет дженериков, коллекций и тп, что может ввести в ступор новичка и отбить желание учиться.
НЛО прилетело и опубликовало эту надпись здесь

Кому лучше?
Можно на питоне вообще оставаться. Зарплаты не отличаются, там много всего интересного можно делать… также как и на скрипте. Зависит от того, что человек хочет. Но если хочется типы, то можно начать с javascript и подключить typescript. Будут и типы и классы и все остальное, но зато постепенно....

>Зарплаты не отличаются
Ну, это еще большой вопрос. И с очень неясным ответом.

Можно ли на питоне делать много всего интересного… напомню, что поскольку мы сравниваем с Java, то мой ответ был бы скорее нет, чем да. Ну то есть, можно конечно, но в сравнении тут питон скорее проиграет. Не для начинающих, возможно, но в перспективе почти наверняка.

В сравнении с новой версией Java, скажем где-то с 11 — уже не будет сильно проще. В сравнении с груви и котлином — проигрывает и для начинающих сразу, потому что вся та же простота питона там есть, а некоторых лишних заморочек уже нет, так как оба языка более новые.
Основное применение Java сейчас — это WEB разработка. И с 99% вероятностью вы туда попадёте. Python применяется и в машинном обучении, и в работе с данными, и в веб разработке, и в embeded разработке(raspberry pi, например) и тд и тп. Это большой вопрос, что программировать интереснее, но как мне кажется Python в этом плане не уступает. А Груви и Котлин вообще такое. У груви применений намного меньше, чем у Python или Javascript, а Котлин пока только под Android применяют. Многие компании, кто котлин пробовал в боевых проектах — так и не взяли его на вооружение, не увидев значительных преимуществ. Тоже так себе занятие учить узконаправленный язык…
>Основное применение Java сейчас — это WEB разработка.
Кто вам сказал? У меня вот большая часть проектов, даже если имеют какой-то веб, но таковым ни разу не являются. Ну в общем это далеко не факт. Все применения, что вы назвали, так или иначе имеют место и для Java. И даже embebbed в какой-то степени. Причем если вспомнить JavaME — то даже и давно. Это конечно не совсем честная Java, но все-таки.

>Python применяется и в машинном обучении, и в работе с данными
Ага, ага. То-то у нас модели иногда сначала на питоне пишут, а потом на java/scala переписывают — чтобы хоть более-менее вменяемо по скорости работало.

>Python в этом плане не уступает
А я не говорю, что он уступает. Он вполне применим, без вопросов. Вы вполне можете прожить жизнь, ни на чем больше не разрабатывая. Это полноценная экосистема. Но некоторые тонкости все же есть…

Если вспомнить весеннюю кажется статью на примерно эту тему «зачем писать на Java, когда есть такой замечательный питон», то я тогда еще отвечал, что вменяемые люди в общем-то не пишут «на Java», а пишут они в экосистеме JVM. Которая одним языком не ограничена, в отличие от экосистемы питона, где только он один — а чуть что, нужно расширение на C.

Например, груви — я его люблю самого по себе, но это еще и основной язык разработки в случае если вы используете gradle или jenkins — т.е. для энтерпрайза если и не близко к 100%, то очень много. Так что насчет «меньше применений» — ну да, если gradle не считать за применение, то совсем-совсем никто и не пользуется ;)

Ну то есть, если вы выбираете себе для начала экосистему JVM, то вы в общем-то сразу (или потом) можете выбирать из множества имеющихся весьма приличных разных языков. Кложа, скажем, чем не выбор даже и для начального обучения? При этом экосистема у вас остается таже самая, и зная, как подключать зависимости (которые по большей части все в репозиториях maven), вы уже знаете это для всех языков.
>Python применяется и в машинном обучении
Ну опять же — мы же изначально про начинающих, не? То есть, я говорю скажем груви, и имею в виду вот что:

def arr= [1, 2, 3]
def map= [1:"one", 2:"two"]


т.е. простой синтаксис, без заморочек Java, с константами для массивов и коллекций. Без обязательного указания типов (но с возможностью их указания). То есть, по простоте тут у конкурентов примерно так же все (или иначе говоря, груви, котлин, современный javascript или питон тут эквивалентны, с точностью до вкусов).

А машинное обучение… все равно ведь большинство тех, кто в этом направлении работает, не пишут сами библиотеки, а пользуются готовыми. И даже если вы планируете в этом направлении развиваться, начинают-то все равно не с ML, а с чего попроще.

Рано или поздно все сведется к С:-)

НЛО прилетело и опубликовало эту надпись здесь

Начинать обучение лучше с того, на чем ученику интересно что-то написать. Занимается он моддингом NWN/Ведьмака — значит с NWN script. Занимается моддингом TES-ов — MWScript. И так далее. Любит копаться в экселе? VBA (прости господи).


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

Жаль в статье нет про Паскаль. Он помню очень дисциплинировал написанием переменных в одной секции, ну и в целом приучал к порядку.
А ещё в нем отлично можно изучать указатели например и всякие структуры данных. Паскаль вообще хороший язык для изучения программирования.
Начинать надо с классики — Алгол.
И Ассемблером подпереть потом (чтобы вообще никаких вопросов не оставалось по «шойтан-машинам»).
Всё остальное — тюнинг.
PS. И книжки почитать — Кнута, Буча. Без привязки к ЯП которые.

Кто-то очень странно пошутил.


Для начинающих, первым языком? Которые не знают, что такое функция и переменная? Не говоря уж о классах...


Это сколько же времени пройдёт, прежде чем они сумеют написать
public static void main в своем Hello World
и понять, что это и зачем вообще нужно? А почему public? А почему void? Я себе предоставляю школьников классе так в 5-м, которые путают ООП с ОПГ...


В общем, кроме магии повторения заклинания "хорошая вещь, надо брать. очень хорошая вещь. ведь хорошая очень, брать надо", аргументов в статье и нет.

Управление памятью – это большое дело в начале обучения программированию.
именно поэтому и надо начинать с си/плюсов а не с языка с GC

Сначала надо человека думать алгоритмически научить. А памятью и потом можно поуправлять. И если уж учить плюсам, то более-менее современным, а не 97 года.

«человека думать алгоритмически научить» можно хоть на си, хоть на питоне. Хотя на яп низкого уровня это имеет больше смысла — там хотя бы понятно зачем нужны оптимальные алгоритмы. Просто направление обучения память(си/плюсы) -> ООП(java/c#) -> практика(типа CV на питоне) куда логичнее.

Кому как. Но я считаю что лучшим способом начать осваивать программирование - это изучить excel. Мало того что само умение хорошо работать с таблицами пригодится в любой области ИТ, там сама робота с таблицами даёт наглядное представление работы с алгоритмами, выводом, ссылками, проведением расчётов, построением графиков, и самый главный жирный + - это вижуал бейсик, работа с макросами.

Человек который изучит обширнейший функционал excel в дальнейшем с лёгкостью воспримет любой другой язык, так как главные навыки уже будут освоены.

Лучший язык для начинающих — Фортран (2003+). Простой и незамороченный, статическая типизация, и можно быстро дорасти до ООП (derived types) и даже элементов ФП.
print *, "Hello"

type, public :: customer
  integer :: id
  character(:), allocatable :: first_name
  character(:), allocatable :: last_name
  type(nightmare_data_structure), dimension(MANY) :: fig_znaet_cho
end type

(Да и есть frepl, убогий, но для начального обучения самое то:)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации