Привет, Хабр! Представляю вашему вниманию перевод статьи «Is Java The Best Programming language to Learn First?» автора Javin Paul.

image

Часто получаю вопросы, вроде: «Какой язык программирования изучить первым?», «Java-тот самый язык программирования, на котором стоит начать писать?», «Насколько Java хорош в качестве первого языка программирования?», «Который из языков программирования самый подходящий для начинающих?» или «Начать с Java или Python?».

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

По моему мнению, самая веская причина начала программирования на Java или выбора его в качестве первого языка – Java освоить проще.

Некоторые могут утверждать, что Python ещё проще Java и даже не требует компиляции, но лично я нахожу Java языком, понимать и читать на котором много легче (много лёгким для чтения и понимания).

Последнее поколение программистов начинало учиться писать код с Бейсика и только потом переходило на C и C++ с Java в качестве своего второго или третьего языка программирования.
Одной из причин для этого может быть то, что C и C++ были более востребованными в те дни в отличие от Java. Но действительная причина в том, что учебная программа была построена так, что нас обучали C и C++, поскольку тогда ещё не было Python, по крайней мере, в нашем колледже.

И правда, часто нам не приходится выбирать, и мы изучаем в школе или колледже программирование как часть учебной программы. В моё время C был первым языком программирования в нашем инженерном колледже, потом мы изучали C++, VB, VC++, и, наконец, Java.

Сейчас я говорю о том, что Java проще и легче освоить, но помню, как отметил, что он сложнее по синтаксису по сравнению с C++, поскольку мне приходилось прописывать System.out.println() вместо короткой формы записи cout для того, чтобы вывести сообщение на экран, однако это просто кратковременное неудобство.

Когда я начал писать и поддерживать большие программы, я нашёл код на Java более читабельным, и вы можете понять, что делает код. В Java отладка и поиск ошибок были много более удобные, чем в C++ или C.

Кстати говоря, я учусь профессиональному программированию или, как вы скажете, настоящему кодингу на моей первой работе. Именно тогда я и начал серьёзно изучать Java.

Java – язык программирования, с которого стоит начать?


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

  1. Java проще, синтаксис гораздо более читабельный, чем синтаксис C, C++ или другого языка.
  2. Язык Java хорош для изучения объектно-ориентированного программирования, но не для процедурного, где он уступает C. ООП или Объектно-Ориентированное Программирование является полезным навыком, потому что оно достаточно хорошо справляется со сложностью реального приложения. Проще думать с точки зрения класса и объектов.
  3. Java имеет богатый API, и вы можете делать очень много в Java, например, работать с графикой, звуком и, что всего вероятнее, писать небольшие игры, такие как Крестики-Нолики, Тетрис и др. Не то, что вы не можете сделать это на других языках, но тогда вам придётся часто загружать и устанавливать различные программы и библиотеки, что для начинающего программиста работа непростая. Когда вы устанавливаете Java, большая часть всего необходимого для работы устанавливается уже в процессе установки языка.
  4. Java имеет сильную поддержку сообщества, неважно, какого рода вопросы, сомнения или проблемы у вас возникли, Google сможет найти ответы. Если не Google, то есть Stack Overflow, форумы Java и множество других сообществ, которые вам помогут. Это действительно самая главная причина, почему я советую начинающим учиться писать код на Java, поскольку, когда вы начнёте учиться программировать, вы столкнётесь с множеством различных проблем, прежде чем начать понимать основы программирования и сам Java. Поскольку Java-разработчиков насчитывается несколько миллионов и оказывается поддержка сообщества, всего вероятнее вы быстро отыщите ответы без каких-либо разочарований и недовольств.
  5. Java – строго типизированный язык, который исправляет множество ошибок, допущенных начинающими программистами. Также, в меньшей мере, подходит для статической типизации. Это ещё одна причина, по которой я предлагаю начинающим изучать сначала Java, а не Python, потому что Python – язык с динамической типизацией, и вам не нужно определять типы, что обычно запутывает.
  6. Java устанавливается со встроенным Garbage collection (автоматическое управление памятью, что занимают неиспользуемые объекты), что является большим плюсом для абсолютных новичков. Управление памятью – это большое дело в начале обучения программированию.

Это те несколько причин, почему я считаю, что начинающим следует сначала освоить Java и только потом любой другой язык программирования. Я могу быть предвзятым, потому что я Java-программист, но я также знаю Python и я также занимался профессиональным программированием на C и C++.

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

Достаточно ли Java для успешной карьеры программиста?


Вопрос не в различии языков программирования, нет. Как программист, вы должны знать много вещей, таких как структура данных, алгоритмы, управление памятью, объектно-ориентированное программирование, скрипты и так далее. А другой язык учит вас другому.

Как только вам будет легко работать с Java, вы можете перейти на другие языки программирования, такие как Scala, JavaScript или выбрать скриптовые языки, например, Python, которые не нужно компилировать.

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

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

Если вы дружите с логикой и можете сделать вывод, основанный на ограниченной доступной информации, тогда вам не составит труда устранять проблемы и находить ошибки в коде.
Хороший опыт работы с такими интегрированными средами разработки (IDE), как Eclipse, NetBeans или IntelliJ IDEA и действительно отличные инструменты Java также помогут вам в написании кода и его отладке.

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

Вкратце, вы определённо можете выбрать Java в качестве своего первого языка программирования, и, когда вы его освоите, попробуйте выучить ещё парочку языков, например, JavaScript или Python.

image

Комментарии (52)


  1. soul_survivor
    22.11.2019 13:07
    +6

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


    1. Nagg
      22.11.2019 13:12
      +1

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


    1. bvn13
      22.11.2019 13:16
      +1

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


      1. BratSinot
        22.11.2019 13:35

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


        1. Free_ze
          22.11.2019 18:37
          +1

          Ведь это загадка! А каждая загадка по-своему притягательна. Появляется ощущение, что в инструменте есть много возможностей, ведь ключевое слово что-то специальное означает, какую-то крутую возможность даёт. Это мотивирует (=


          1. berez
            25.11.2019 10:21

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


            1. Free_ze
              25.11.2019 12:04
              +1

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

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


              1. berez
                25.11.2019 13:05

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

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

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

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

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

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

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


                1. Free_ze
                  25.11.2019 16:16
                  +1

                  Мы пока будем пользоваться этим и этим.

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

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

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

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

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

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

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

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

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

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

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

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


                  1. berez
                    25.11.2019 22:04

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


                    1. Free_ze
                      26.11.2019 11:55

                      Разве я где-то говорил, что преподаватель должен ограничивать доступ к средствам?

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

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

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

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

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

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

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

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

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

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

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

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

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

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


    1. zagayevskiy
      22.11.2019 13:24
      +12

      Python лучше паскаля и бейсика. Учить мёртвым языкам это путь российских универов, и это печально.


      1. iandarken
        22.11.2019 15:59
        -3

        Вот такие питонасты и порождают 96% из
        news.rambler.ru/other/43207169-microsoft-usomnilas-v-professionalizme-rossiyskih-programmistov
        Паскаль хотя бы откровенный быдлокод не даст скомпилировать


        1. zagayevskiy
          22.11.2019 16:42

          Какие «такие» питонисты?
          А про быдлокод… ну чот хз, это весьма странное утверждение. Вам бы посмотреть на мой код пятнадцатилетней давности на паскале, когда я не знал ещё про циклы и организовал интерактивный интерфейс в консольке на goto. Вот где был быдлокод:)


          1. iandarken
            22.11.2019 17:43

            Есть подозрение, что на питоне это было бы еще хуже в перспективе


            1. zagayevskiy
              22.11.2019 22:21

              %) Ну ок


        1. Tanner
          22.11.2019 16:54
          +2

          Я бы тоже усомнился в профессионализме, если бы посмотрел, как финансируются и управляются ВУЗы в России, как эмигрируют учёные, преподаватели и т. д. Языки программирования к этому не имеют отношения.


      1. dakuan
        22.11.2019 19:02

        И внезапно правильно делают. Какое вообще отношение первый язык имеет к карьерным перспективам и популярности языка? Если вы в универе на первом курсе полгода учили Pascal, не означает, что вы теперь всю жизнь только на нем и обязаны программировать. Это язык для изучения основ программирования и для этой цели он хорошо подходит. И я даже затрудняюсь назвать язык, который подходит лучше. Разве что Си, но там гораздо проще выстрелить себе в ногу. Python, JS и прочие современные языки безусловно хороши, но как с их помощью, например, объяснять арифметику указателей, работу с памятью и прочее?


        1. zagayevskiy
          22.11.2019 22:37

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

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


          1. dakuan
            23.11.2019 00:24

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


            1. zagayevskiy
              23.11.2019 07:17

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


              1. Groramar
                23.11.2019 16:13

                фикс


        1. tmin10
          23.11.2019 00:24

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


      1. Groramar
        22.11.2019 22:04

        Где паскаль мертвый? Цветет и пахнет. На днях очередная версия 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!!!


        1. zagayevskiy
          22.11.2019 22:31

          Делфи это не паскаль, официально.
          И уж вот что-что, а его точно изучать не надо.


          1. Groramar
            23.11.2019 16:20

            Паскали тоже разные бывают. Например:
            pascalabc.net


    1. rssdev10
      22.11.2019 15:00
      +1

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


    1. trix
      22.11.2019 16:01

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


  1. Nagg
    22.11.2019 13:10

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


    1. Tanner
      22.11.2019 14:04
      -1

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

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

      А как насчёт отсутствия беззнаковых целых? Знаковый byte разве мозг не ломает?


    1. zeolant
      22.11.2019 15:13
      +1

      Без боксинга вполне можно обойтись поначалу, если использовать только примитивы (то есть так и делают, если посмотреть программы курсов каких-нибудь). А, чисто теоретически, можно обойтись и без объявления классов для «Hello World». Можно попробовать использовать JShell snippets. В IDEA есть поддержка jshell и классы там не надо объявлять. Единственно что без обращения к System.out.println не обойтись )
      Я имею в виду чисто для обучения синтаксису, управляющим конструкциям, циклам и т.п. Понятно что интернет-магазин так не получиться написать.


  1. eumorozov
    22.11.2019 13:39
    +5

    Если говорить именно про обучение, то как может быть проще язык, в котором нет REPL, и в котором начинающему придется с самого начала как-то объяснять что такое классы, и почему он должен запихать свою одну-единственную строчку System.out.println("Hello, world") в несколько непонятных для новчика оберток.


    В общем, очень странная статья. То, что описывается как преимущества для новичка, преимуществами либо не является, либо есть в других языках, с которыми автор сравнивает (например, сборка мусора есть и в Python и в массе других языков, это отнюдь не отличительная черта Java).


    1. xhumanoid
      22.11.2019 15:52
      +1

      $ jshell
      |  Welcome to JShell -- Version 11.0.5
      |  For an introduction type: /help intro
      
      jshell> System.out.println("hi")
      hi
      
      jshell>
      


      openjdk.java.net/jeps/222


  1. trir
    22.11.2019 13:41
    -3

    c# лучше по всем пунктам


  1. sshikov
    22.11.2019 13:52
    +1

    Я сам Java разработчик по большей части, но такая постановка вопроса меня смущает. Для начинающих? Да нифига. начинающим лучше груви, котлин, в общем что-то немного попроще и поудобнее. При правильном подходе я бы даже скалу взял (но где взять ментора с правильным подходом — вопрос сложный).

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

    Брать ли вместо Java скажем c#? Не исключаю — смотря чего вы хотите в итоге добиться. Экосистема .Net сопоставима, где-то даже лучше, другие языки типа F# в ней тоже есть, стоит посмотреть и в эту сторону.


  1. aPiks
    22.11.2019 15:09
    +1

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


    1. 0xd34df00d
      22.11.2019 15:19
      +4

      Но лучше сразу приучать мыслить с типами, а питон для этого подходит не очень.


      1. aPiks
        22.11.2019 16:59
        -1

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


        1. sshikov
          23.11.2019 10:17

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

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

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


          1. aPiks
            23.11.2019 11:15
            +1

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


            1. sshikov
              23.11.2019 12:09

              >Основное применение Java сейчас — это WEB разработка.
              Кто вам сказал? У меня вот большая часть проектов, даже если имеют какой-то веб, но таковым ни разу не являются. Ну в общем это далеко не факт. Все применения, что вы назвали, так или иначе имеют место и для Java. И даже embebbed в какой-то степени. Причем если вспомнить JavaME — то даже и давно. Это конечно не совсем честная Java, но все-таки.

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

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

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

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

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


            1. sshikov
              23.11.2019 12:15

              >Python применяется и в машинном обучении
              Ну опять же — мы же изначально про начинающих, не? То есть, я говорю скажем груви, и имею в виду вот что:

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


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

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


  1. saag
    22.11.2019 15:31

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


  1. vlreshet
    22.11.2019 16:14
    +1

    Если отбросить предрассудки, то отличный язык для новичка это PHP. Простой синтаксис, явно видно переменные (тот самый знак доллара), можно писать без ООП, результат сразу видно хоть в консоли хоть в браузере. Советов на stackoverflow — вагон. Документация по языку — отличная. А добавить щепотку HTML — и человек уже сразу видит свои труды. Там, дальше, уже на что угодно можно переходить, главное получить основы.


  1. Mingun
    22.11.2019 16:19
    +1

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


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


  1. maxzh83
    22.11.2019 18:22

    Жаль в статье нет про Паскаль. Он помню очень дисциплинировал написанием переменных в одной секции, ну и в целом приучал к порядку.


    1. Andronas
      25.11.2019 10:56

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


  1. justhabrauser
    22.11.2019 19:03
    -2

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


  1. mSnus
    23.11.2019 03:27

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


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


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


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


  1. Antervis
    23.11.2019 04:02

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


    1. zagayevskiy
      23.11.2019 07:21

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


      1. Antervis
        23.11.2019 15:28

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