Гвоздь лучше забивать молотком, а бетонную сваю -- копром. Поэтому нужно знать несколько языков, а владеть двумя-тремя-четырьмя. Для меня эти четыре суть C++, 1C, Python, C#. Могу на Bison и Flex.
Самый перспективный тот, в котором ты мастер по решению задач пользователя. Я вмдел реализацию TCP/IP под досом через ком-порт на бат-файле. Можно спорить, но оно работало. А если ты пока ни в чем не мастер то читай дальше
Если ты программируешь для себя/друзьям/тулз для работы, то все равно. Я пользуюсь Питоном, например, если операции по пользованию программой не требуют ожидания от пользователя более 0.5 сек на его компе. Это у меня такой дебильный юзабилити-тест.
Если ты работаешь на софтовую фирму, то С/С++ ты знать
обязан. Эти языки не умрут никогда, потому что есть
стандарт и
кроссплатформенность: на любой железной+ОС платформе есть хотя бы один компилер С/С++. Даже если ты прогишь на 1С или ПХП или Жабе или шелл-скрипты сочиняешь, то знание С/С++ пригодится потому, что у перечисленных языков реализация выполнена на С/С++ (плюс чуть-чуть на bison и flex, которые сами на сделаны все равно на С) и интерфейсы для расширения могут быть в первую очередь в виде хедеров и либ для С/С++.
Нельзя забывать, что все соврменные ОС написаны на С/С++ с теми же замечаниями относительно интерфейсов.
Это база. Все остальное по профилю: T-SQL/PL-SQL/тыц-SQL, php, java, fortran (если бы кто знал, сколько под него написано кодов для численных методов), perl, shell, python, object pascal, C#, 1C.
Ассемблер полезен в самых вложенных и самых исполняемых циклах. Хотспоты… В тех 10% кода, которые исполняются 90% времени. И, конечно, кроссплатформенность идет в попу без дополнительных усилий. И ассемблер часто юзают студенты для "крутости". "Оптимизируя" там, где не требуется, ибо о профайлере никогда не слышали.
Те кто, бьет себя пяткой в грудь начсет ассемблера и его перспективности, видимо новые пророки. Море софта производится именно на С/С++ или на чем-то, что работает в CGI (и т.п.) для организации веб-интерфейса, а ассемблер -- узкоспециализированный инструмент, который не мешает изучить и применять целесообразно.
Пусть каждый сравнит востребованные пользователями программы, написанные самостоятельно на ассемблере и других языках. Соотношение, уверен, будет у абсолютного большинства не в пользу ассемблера. Опять же сочинишь на ассемблере, будет оно выводится на 0.1 сек быстрее, а юзеры все равно купят компы на которых это будет незаметно.
Напишешь на ассембле под 32-бит нителовский проц, а тут мода и маааааааленькая необходимость в 64-бит, юзер требует, чтобы и у него 64-bit ready и прочая хренотень. И возись с выравниванием и типами указателей на ассемблере.
Современные тенденции и, шире, перспективы в абстракции. Это я и об ООП, и о кроссплатформенности, и о стандартах, и о востребованности архитекторов программных систем, использующих UML и иже с ними. Нужно быть независимым настолько, насколько возможно от специализации операций над данными, архитектуры, ОС, варианта реализации компилятора, инструмента проектирования, т.е. абстрагироваться настолько. насколько можно от частного, вынося частное в отдельные, легко заменяемые модули.
Учись документировать код. И при написании нужно быть чуть менее трюкачем, чем способен понять сам через год, читая свой же код. Не говоря о других. Выделять кросс-платформенную часть в твоем коде (на QIP посмотрите
) тоже никогда не мешает и компилировать ее под ВИндус, Линух, всякие мобайлы.
А лучше всего изучать в первую очередь математику и алгоритмы.