Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Здравствуйте! Скажите пожалуйста, какие языки программирования сейчас актуальны и не растратят себя через несколько лет? И источники для изучения:) спасибо

ТехнологииПрограммирование
Александр Колесник
  · 2,1 K
Пользователь старого TheQuestion  · 3 янв 2016

Языки программирования очень редко уходят в небытие. Сейчас в IT среде часто стоит вопрос о выборе конкретной платформы или технологии, но не языков программирования .

Есть три ключевых принципа при оценке перспектив языка:

  1. Имеется открытый исходный код или несколько реализаций (+50)
  2. Имеется стандарт, разрабатываемый на свободной основе (+20)

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

Так что.. Вероятнее всего язык отмирать будет медленно и предсказуемо, успеете перестроиться. Кого это не ждет в ближайшем будущем? То, что сейчас гипер-usable. Рейтинги есть в Google. Навскидку TIOBE Index goo.gl Существует рейтинг от GitHut.info хотя, его не стоит рассматривать серьезно - это лишь компиляция из цифр по всем репозиториям, не отражающая действительности за пределами GitHub. Есть еще рейтинг RedMonk:

undefined

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

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

Рекомендую начинать ознакомление лоб-в-лоб с того, что кажется вам самым лучшим или самым сложным. Например C++, Python, полезно, пусть и затратно и еще сложнее, освоить веб-программирование - JS, CSS(html), PHP или Ruby для back-end'а, потом к языкам Java или C#, Objective-C для яблока. Надо помнить, что всегда существуют и менее популярные языки, которые распространены тем не менее, например Go, Swift, Haskell. Их проблему я вижу в том, что они не находят широкой поддержки среди специалистов и используются в основном (Go) в целях узкого класса. Если быть точнее, то некоторые языки отлично подходят для небольших задач (например, веб-сайтов или приложений), но не имеют ничего общего с более сложными классами задач (а такие есть, и играют решающую роль для самого языка).

Массово случаются заблуждения - вроде мемов, что C/C++ "скоро умрет". Как правило они возникают из-за рекламы в медиа каких-нибудь языков или технологий, как бы затмевающих пока еще не непосвященный в игру разум. В приведенном примере утверждение никогда не находит поддержки, хотя полупрофессионалы (например, журналисты или преподаватели) зачастую начинают страдать этим "рекламным синдромом". В подобном случае главное не оправдывать свою лень, а произвести собственный research, разобраться в том, в каких сферах язык более перспективен.

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

  1. Веб-разработка (Front-end). Здесь обязательны к освоению HTML5, основы и принципы CSS, HTTP/веба и какой-нибудь прикладной бодяги по типу jQuery/AngularJS; предлагаю искать хорошие книги, по силам предпочитать оригинал без перевода, - "Front End Web development books recommend"

  2. Веб-разработка (Back-end). Здесь пространство для выбора между технологиями резко возрастает. Все во многом решает и ваши навыки администратора сервера/баз данных. На мой взгляд разделы ASP .NET(C#, OS: Windows Server), Python/Django!, PHP/Symfony (OS:Apache2, Linux) являются надежными, работа будет. И конечно же обязательно к пониманию устройство баз данных и SQL.

  3. Мобильные приложения (Android, iOS, Windows Store). Тут вы для начала осваиваете одного вендора, потом другого, если осилите: например, Apple или Android. Опять посоветую купить книгу (а лучше две разных, но потоньше), что-то из рекомендаций по типу fromdev.com

  4. Десктоп (приложения для Windows или Mac). Тут вообще сотни вариантов. Я сторонник переносимости кода, потому нашел себя в C++ с каким-нибудь фреймворком, если нужен. Это намного более длинный и сложный раздел технологий, он требует не только языка программирования, понимания паттернов и стандартов, но и практичных подходов в приоритете.

Кроме того, существуют десятки (если не сотни) других разделов, в которых нужны свои технологии, например, в 3D-графике, ВПК или производстве.

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

Помимо упомянутых здесь, существует и множество других менее популярных в широком usage языков. Без освоения тех, о которых я говорил, с ними делать нечего, и ставить на них, особенно если находишься в СНГ, не стоит, экономика.