Для каких целей подходит определенный язык программирования?
Доброго времени суток! После долгих раздумий о смысле жизни и прочих вечных вопросах, решил, что моя последующая деятельность будет связана с IT-индустрией. Какое именно направление? Сложно сказать, необходимо попробовать множество разных вещей, для того, чтобы определится, сделать окончательный (разумеется ориентируясь на внешние условия) выбор.
После 3-летнего обучения в ВУЗе понял, что знать ничего не знаю и по сути ничего не умею. Есть небольшие знания по c/c++, с#, html, css, которые даже базовыми сложно назвать.
Решил начать знакомство с программированием заново, с нуля. Сразу появилась проблема выбора ЯП. Понятное дело, сначала нужно определиться с целью, задачами, которые нужно решить этим ЯП, но сказать что-то конкретное трудно.
Что хочу от ЯП:
- актуальность
- широкие возможности для саморазвития
- пригодность полученных навыков для последующего "обучения"
- востребованность на рынке труда
- эта востребованность хорошо оплачивалась.
Для того, чтобы легче было определиться решил подойти к проблеме с обратной стороны, узнать, для каких целей лучше всего подходит, какой ЯП? В каких реалиях каждый из них наиболее востребован?
С веб-разработкой я решил повременить, начать с чего-то неконкретного, более так сказать универсального. Выбор пал на python и java.
Плюс python - легкость освоения и непривязанность к какой-либо парадигме
Плюс java - большая востребованность на рынке труда и разработка приложений под android. Какой из них, как Вы считаете, больше подойдет под мои неконкретные цели?
Python, после него - C/C++.
Оба оплачиваются ооочень неплохо, если способны написать нечто сложнее статического сайта на django.
С веб-разработкой зря решили повременить - веб-разработчиков сейчас требуется намного больше.
Java - гиблый долгий путь с низкими шансами найти работу на старте (зато хорошей зарплатой потом, вот только до неё дожить надо).
А может ну его, Python, взяться сразу за c++, как Вы считаете?
Кстати, я всегда считал, что веб-разработчиков сейчас в избытке, любой, кому не лень, учит html, css, немного php и клепает шаблонные сайты. т.е. большая конкуренция в этом направлении.
@nicenice не, то что вы указали, это не веб-разработчики. Это клепатели визиток или магазинов. Их действительно полно.
Веб-разработчики пишут сервисы вроде afisha.yandex.ru, rasp.yandex.ru и прочих (привожу их в пример, т.к. они на джанге и чистом питоне). Это сложные сервисы, с внешними источниками данных и кучей интересных задач (начиная от "забрать данные в разных форматах и сложить в базу сервиса" и до "написать считалку маршрутов с пересадкой").
В среде веб-разработчиков конкуренции почти нет. Особенно, в Москве/Питере и Екб.
Python прекрасен для старта в программировании. Более того, он всегда пригодится. Например, популярно практикой является написание прототипов на Python (реализующих логику работы будущего приложения/сервиса) - это быстро, с последующим переписыванием на C++.
Так же Python пригодится для написания инструментов "для себя" - всяких парсеров, скриптов и прочего. Ну и выучить его можно быстро, так что он позволит начать получать зарплату на год-другой раньше, чем начинающему сишнику.
С же язык вечный, с хорошим уровнем его знания вы никогда без работы не останетесь. Но при этом он и в разы сложнее - писать большие хорошие программы на С сложно. Сильно выше вероятность прострелить ногу. Нужно работать с памятью и другими ресурсами. Пайтон же от подобных вещей вас избавляет.
Так что учить лучше сначала пайтон, но С параллельно тоже начинать.
По ходу работы инженера (60% всей работы), достаточно знать основные алгоритмы (преобразование сигнала, ПИД-регуляторы, и т.п), а реализация их на определенном "ЯП" не является такой уж сложной задачей. Главное понимание алгоритма работы и четкая поставленная задача. Редко кода бывает нужна большая скорость обработки данных, тогда применяю конкретный "ЯП" в основном C++. Для само реализации хочу попробовать продукт Qt, потому как кроссплатформенность считаю будущим. И опять же, знание основных алгоритмов, считаю наиболее важным нежели переход к определенному "ЯП".
Про кроссплатформенность и знания алгоритмов полностью согласен. Об этом много думал и поставил в очередь на (возможно ближайшее) будущее изучение язык Java. Хотя как я понял, он с каждым годом теряет позиции и держится в основном из-за того, что на нем написана огромная куча программ. Qt, как я понимаю, это инструментарий для создания интерфейса, который "включается" в определенные "ЯП". А что, если язык в который он включается не кроссплатформенный?
Был бы очень признателен, если бы Вы скинули несколько толковых ссылок, где внятным языком описаны алгоритмы, которые чаще всего используются.
При прочих равных я выбрал бы python( сам на нём работаю), у него есть свои казусы, но на нём писать проще и приятнее( лично моё мнение) чем на той же Java, уж слишком сильно Java загоняет тебя в рамки...