С какого языка программирования лучше начинать обучение
Какой язык программирования лучше выбрать первым для изучения новичку?
- Ответы экспертов, 29 марта 2016 в 16:23
Один из самых популярных вопросов в нашем сообществе от начинающих программистов звучит так: «С какого языка мне начать?» Для ответа мы привлекли наших экспертов.
Иван Кухта , старший программист-разработчик ПО в компании Acronis
Все зависит от того, какую область вы выберете. Если вы хотите работать непосредственно с железом, писать драйверы и различные приложения, для которых требуется максимальная производительность, — тогда подойдут только C или C++. Если ваша цель — приложения для мобильников, стоит изучить Java или Objective C, C#. Для веб-серверов необходимы go, python и php; для веб-приложений — JavaScript.
Если же вы пока не определились с областью, можно смело выбирать C/C++, поскольку, зная этот язык, вы без труда выучите любой другой. Есть только одна вещь, которую важно помнить: как и разговорный язык, язык программирования забывается, если его постоянно не использовать, поэтому лучше владеть одним или двумя языками в совершенстве, чем поверхностно знать большое количество.
На мой взгляд, настоящий программист никогда не ограничивается знанием только одного языка. И даже если в будущем вы собираетесь писать драйвера и системные приложения, вам всё равно пригодится какой-нибудь из скриптовых языков, таких как perl или python. Более того, знание скриптовых языков сейчас просто необходимо для любого программиста, несмотря на его специализацию.
Алексей Камалетдинов , разработчик в «Ростелеком Контакт-центр»
Python вполне подойдет для изучения общих концепций программирования. Это очень популярный язык, у него много библиотек, синтаксис легко читаемый и довольно аккуратный код. Основными преимуществами Python для новичков является то, что он довольно распространен и его легко выучить. Вы с легкостью сможете на нем писать как web-приложения, так и обычные десктопные. В зависимости от предметной области, необходимо выбрать объектно-ориентированный язык. Например, если вы занимаемся системным программированием, то лучше всего подойдет С++. Если вы разрабатываете корпоративное приложение (информационные системы предприятий), то это С# или Java.
Стас Павлов , руководитель направления маркетинга для технических аудиторий в Microsoft Россия
Я в своё время начинал с Фортрана и Паскаля, так как они были у меня в институте. Потом был С/C++, Visual Basic Script, PHP и Visual Basic, потом C#, потом немного F#.
Если опираться на свой опыт и иметь возможность выбирать, наиболее комфортно мне было разрабатывать на С#, и с него бы я и начал. Больше всего в плане понимания алгоритмов и механизмов работы ОС, под которые я писал, дал мне C++.
Артём Кудзев , руководитель направления маркетинга технологий 2ГИС
На примере C++ и Java изучить основу основ ООП, а потом определиться в предметной области и изучить родной для неё язык.
Григорий Петров ,
Полагаю, лучше всего начать обучение с JavaScript. Благодаря веб браузерам, этот язык программирования является стандартом де-факто при создании веб приложений, одной из самых быстрорастущих областей разработки. Также по нему есть великолепная бесплатная книга, «Eloquent JavaScript», переведенная на русский.
Борис Шестаков , руководитель группы разработки Java в AT Consulting
Все зависит от задачи, которую вы хотите решить. Однако если это ваш первый язык, я бы порекомендовал язык со строгой типизацией общего назначения (C++, Java, .NET): с ними в любом случае не пропадете и будет легко перейти на любой другой. Ещё интересный способ понять, какой язык взять для изучения – зайти на GitHub, ввести в поиск интересующую тему и посмотреть, на чем пишут другие разработчики.
Дмитрий Сошников , технологический евангелист Microsoft, доцент МФТИ, МАИ, преподаватель детского лагеря JUNIO-R
Здесь всё зависит от возраста. Если вы решили действительно смолоду учиться программировать, и вам еще нет 12 лет – лучше начинать с простых графических языков, типа Kodu Game Lab или Scratch . Считается, что традиционные языки программирования стоит осваивать после 12-ти. Из традиционных языков мне всегда был близок C # – для него есть хорошая среда разработки, а программировать можно всё: от игр в Unity , до веб-сайтов на ASP . NET или электроники. Для обучения можно посмотреть видеоуроки, или почитать книжку C # для школьников .
Алексей Михайлишин , руководитель отдела разработки ПО компании ОС3
Новичкам я бы рекомендовал для начала понять, что язык — это всего лишь инструмент в работе программиста. Да, конечно, важно владеть им уверенно, чтобы создавать хорошие программы, но на первом месте должно быть именно мастерство разработчика, а не язык, на котором он пишет.
Но так как начинать всё равно с чего-то надо, да и изучать те же алгоритмы и структуры данных в вакууме не очень удобно, то могу порекомендовать использовать для этого язык Си. Он достаточно низкого уровня, чтобы не приучать к тоннам синтаксического сахара и дать общее понимание того, как устроен компьютер, который исполняет программу. Но вместе с тем это и не язык ассемблера, что даёт возможность сосредоточиться на общих вещах, не тратя большую часть умственных усилий на запоминание всех названий jump’ов и значений регистров. В качестве литературы рекомендую классическую K&R.
Также можете обратить внимание на Python, который автоматически приучит вас к некоторой структуре и стилю оформления кода, что тоже полезно для новичков. Да и исполнение интерпретатором вместо полноценной компиляции даст чуть более быструю обратую связь, что важно при обучении.
С какого языка программирования лучше начинать обучение
Деньги на разных рынках принципиально разные. Например, в Кремниевой долине в разы выше. Много достойных вакансий для тех, кто пишет на Java (разработкой под Android) и Java Script; на С/С++, а также на Objective-С и Swift (разработка под iOS).
Глобально, на порядки больше денег приносят работа в компаниях-мейджорах и такие языки, как F#, Clojure, Groovy, Perl, Erlang, Rust, Scala, Go. Кстати, в этом же ряду популярный простой и лаконичный Ruby. А Rust любят многие в IT-комьюнити. Менее популярные языки часто изучают в дополнение к своему основному, широко используемому на рынке.
Доступные и популярные языки, такие как Java или JavaScript (JS), а также языки, дающие фундаментальные знания (С/С++), приносят хорошие деньги и позволяют быстро находить работу в России, на аутсорсе или с релокацией в другие страны.
JavaScipt, C/С++, Python, Swift, Java. (После Java легче изучать перспективные Go и Scala. Scala используется в таких компаниях, как Twitter, Asana, Soundcloud, Hootsuite, Groupon.com, Foursquare, Tumblr и Coursera, но как первый язык его брать не рекомендуют, лучше подготовиться). Есть прогнозы о том, что Go, Scala, R, Rust, Kotlin, Elixir, Clojure и Haskell будут набирать популярность, но начинать лучше с мейнстримового языка.
Отдельно стоит тут сказать про C/С++: немного сложнее в изучении, но если вы хотите сделать карьеру в IT, то это хороший выбор для старта. Вы будете глубже понимать программирование, а не только иметь навыки. Тут нужны баланс, правильные стратегия и тактика, об этом подробнее поговорим чуть позже. Чтобы зарабатывать и скорее войти на рынок, нужны навыки, причем именно те, которые описывают в своих вакансиях работодатели. А для того, чтобы стать архитектором, ведущим разработчиком, нужно еще и глубокое понимание в дополнение к стеку разработчика.
«Хочу работать в известной компании»
Вот данные авторитетного ресурса Stackshare.io по использованию популярных языков программирования в известных компаниях:
Java (Airbnb, Instagram, Uber Technologies, Spotify, Netflix, Pinterest, Slack, Google, LinkedIn, Lyft)
Python (Instagram, Uber Technologies, Spotify, Netflix, Facebook, Dropbox, Pinteres, Reddit, Google)
С (Twich, Telegram Messenger)
JavaScipt (Airbnb, Instagram, Slack, Reddit, eBay, Asana, Coursera, Product Hunt, MIT)
C++ (Google, Twich, IBM, Lyft)
C# (Microsoft, Stack Overflow)
Objective-С (Apple, Instagram, Uber Technologies, Pinterest, Slack, Snapchat)
Swift (Lyft, Asana, Apple)
Go (Google, Uber, Medium, Lyft, Shopify, Twich, Codeacademy)
Ruby (Airbnb, Shopify, StackShare, Twich, Starbucks, Hulu, Kickstarter, Product Hunt, Hotel Tonight, MIT, Coinbase, Codeacademy)
Этой информации достаточно, чтобы сделать выбор первого языка программирования. Выбирайте быстро и сразу приступайте к ежедневному изучению. Иначе в попытках определить «лучший» язык, запутаетесь и деморализуете себя, читая десятки источников. (Это классические грабли тех, кто так и не приступает к изучению). Программисты и другие IT-специалисты знают несколько языков с разными преимуществами и множество инструментов – они постоянно осваивают что-то новое. После первого языка будет следующий, на изучение уходят месяцы, а не долгие годы.
Свой стартовый язык имеет смысл выбрать между популярными (JavaScript, Java и Python), удобными (лаконичный Ruby, визуализирующий обучение Swift), перспективными (Go) и фундаментальными (С/С++: полно работы и, умея, положим, на С++, вы потом будете учиться писать на других языках быстрее).
Кроме того, QA-инженеру, например, не обязательно глубоко знать язык программирования, чтобы начать заниматься автоматизацией тестирования: можно развиваться в программировании параллельно ежедневной работе. almamat blog
Урок 0. С какого языка программирования начать обучение.
Это будет предисловием к следующему уроку (по C#). Да, знаю, подписчики ждали другого урока, но я не мог пройти мимо этой темы.
Прежде чем вы приступите к изучению какого-либо языка программирования, прочитайте следующее:
1) Востребованность. Вы хотите изучать его для себя или для работы? Если для себя, то изучайте тот язык программирования, который вам по душе и, желательно, достаточно популярен ( https://www.tiobe.com/tiobe-index/ ). Если для работы, то в сервисах по поиску работы ( hh.ru ) смотрите вакансии. Смысл изучать какой-либо язык программирования, если он не востребован в вашей среде.
2) Сфера применения. Для чего вы хотите изучать язык программирования? Если нет конкретной цели, в принципе можно изучать любой, так как почти все обучающиеся начинают свой старт с написания консольных приложений (черный/синий экран, белые буквы). Самыми популярными областями применения языков программирования считаются:
b. Мобильная разработка (IOS, Android)
c. Разработка игр
d. Разработка настольных приложений (Windows, Linux, Mac)
P.S. Большинство языков программирования достаточно универсальны, но лучше выбирайте тот язык, который лучше для этого предназначен. Одно дело — программировать на одном языке и сделать задачу за день, другое — ту же задачу на другом языке за неделю.
3) Сложность языка != порог вхождения. Некоторые языки программирования (Javascript) считаются легкими для старта изучения, но далее на практике оказываются сложными для отладки и поиска ошибок. Другие же (C#, Java) считаются сложноватыми для старта, но далее на практике вам удобнее будет их использовать для отладки и поиска ошибок. Поэтому точного ответа, какой из современных языков программирования сложнее – легче нет, хотя… (С++, Assembler). Другое дело, богат ли язык на всевозможные библиотеки для разработки. Каким бы лаконичным или приятным для программиста он бы не был, без множества сторонних библиотек вы многого на нем не добьетесь или попросту убьете много времени.
4) А что, если я захочу изучить другой язык программирования, или переход с одного языка программирования на другой. Большинство языков программирования имеют практически одинаковый фундамент (переменные, условия, циклы, функции/методы, массивы/списки/листы), так что, если, к примеру, на изучение одного языка программирования ушёл год, то на изучении второго уйдет месяц-два-три, а простые задачи вы уже будете решать за неделю-другую.
Подведем итог. Я не хочу разводить дискуссию, каков язык лучше или хуже, просто выскажу своё мнение. Однозначного ответа, какой язык программирования вам учить нет, (так что выбирайте что вам ближе) но мнения IMHO сложились у меня таковы: IOS – swift, Android – Java/Kotlin, настольные Windows-приложения – C#, 3d игры – Unity(C#) Unreal Engine (С++/ BluePrint), Web – JavaScript/Python/Java/C#/PHP/ (их просто дофига). Спасибо за внимание.
Источники:
http://tproger.ru/experts/16/
http://blog.almamat.com/programminglanguages2019
http://pikabu.ru/story/urok_0_s_kakogo_yazyika_programmirovaniya_nachat_obuchenie_6948424