Разработчики обсуждают на Quora, знание каких языков программирования приносит больше всего денег. Look At Me выбрало несколько наиболее обстоятельных комментариев.
Иллюстрация: A Meditation on Biological Modeling
Картер Пейдж, технический руководитель Google: «Короткий ответ: учите С или С++»
«Возможно, вам никогда не придётся пользоваться им на работе, но вы многому научитесь, освоив его. Самые сложные задачи, с которыми сталкиваются лучшие программисты, так или иначе требуют знания C.
Вот некоторые вещи, основанные на C:
- Виртуальная машина Java
- Большая часть Linux
- Python
- Ядро Mac OS X
- Windows (C и C++)
- Oracle Database
- Маршрутизаторы Cisco
Всё, что лежит в основе компьютерных технологий, сложно устроено и сильно влияет на производительность, когда-то создали на C — с небольшим вкраплением ассемблера.
C улучшит ваши навыки в Java. Вы разберётесь, когда виртуальная машина использует стек, а когда — кучу, и что это значит. Вы будете интуитивно понимать, как происходит сборка мусора. Вы будете лучше понимать, как использовать примитивные типы данных и объекты.
C улучшит ваши навыки в Python. Его система классов во многом основывается на C++. Вы научитесь писать грамотный, хорошо организованный код, что позволит вам легче работать с ним в будущем. Вы научитесь осторожнее обращаться с глобальными переменными.
C улучшит ваши навыки в Objective-C. Вы научитесь управлять подсчётом ссылок и поймёте, какая часть кода должна «владеть» объектом. Вы сможете избегать утечек памяти.
Так что лучше — C или C++? Я отдаю предпочтение C++, потому что, хотя они очень близки, C++ поддерживает объектно-ориентированное программирование. Даже если вы будете работать только с функциональными языками, объектно-ориентированное программирование научит вас организовывать код таким образом, чтобы вы могли создавать и поддерживать крупные проекты.
Возможно, вы не будете зарабатывать так же много, как специалисты по COBOL (Один из старейших языков программирования. — Прим. ред.), которые могут внезапно потребоваться. Но после C вы сможете выучить любой другой язык. Если в индустрии компьютерных технологий и есть постоянство, то оно заключается в следующем: сегодняшняя новинка может через несколько лет оказаться старомодной. Научитесь навыкам, которые позволяют обретать новые навыки, и всё у вас будет хорошо».
Штефан Цукерман, программист:
«Если вы умеете правильно организовывать данные, совершенно не важно, каким языком вы владеете. Есть три тесно связанные вещи, которые вам нужно знать:
- Основные структуры данных и алгоритмы (связные списки, хеш-таблицы, сбалансированные и другие деревья поиска, очереди и кучи);
- Моделирование данных, полученных из реального мира (понимание логики уже выстроенных моделей, умение работать со стандартными и сторонними библиотеками);
- Любой язык программирования, который вам удобен. Если вы хорошо знаете язык и можете показать это на деле, то сможете на этом много заработать. Напишите что-нибудь полезное или просто классное, и если вы не боитесь критики (порой — жёсткой), выложите код на тот же GitHub. Если вы хорошо освоите какой-нибудь язык, то сможете выучить любой другой.
Вообще же я бы предложил выучить несколько языков с разными особенностями и уровнями абстракции, так как знание лишь одного языка сильно ограничивает вас в подходах к решению любой задачи.
-
Если брать самый высокий уровень, то я бы посоветовал один из трёх следующих языков: Perl, Python, Ruby (и как вариант Lua). В них встроено много полезных структур данных: хеш-таблицы, динамические массивы и другие. Также они упрощают работу с устройствами ввода-вывода и предлагают модули и библиотеки, которые позволяют сразу перейти к решению проблемы, а не писать промежуточный код, который и так должен быть включён в любой современный язык программирования;
-
Императивный/процедурный язык не слишком низкого уровня: C, Go, Fortran (мой выбор — C);
-
Императивный/объектно-ориентированный язык: C++, C#, Java, Ada (я бы предпочёл C#, потому что его создавали, учитывая ошибки Java);
- Функциональный/мультипарадигмальный язык: Objective Caml, Clojure, Common LISP, Erlang, F#, Haskell, Scala, Scheme. Я склоняюсь к OCaml и Scala, потому что их синтаксис проще, чем у остальных, хотя это, конечно, субъективно.
Какой бы язык вы ни выбрали, выучите его по-настоящему хорошо и наберитесь опыта работы с ним. Уметь создавать реализацию класса в Java — это здорово, но если вы узнаете, как в Java работает сборка мусора (или в чём её недостатки), то станете более классным программистом. Хорошо знать, что в Perl можно использовать модули,
но совсем другое дело, если вы понимаете, когда они просто интерфейсы для кода на C: это означает, что интерпретатор не управляет памятью автоматически. И так далее».
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.