ВопросКакой язык программирования
лучше учить?
Знания, которые принесут больше всего денег
Текст
Антон Мухатаев
Каждую неделю Look At Me ищет ответ на один неожиданный вопрос. Сегодня мы пытаемся узнать, есть ли языки программирования, знание которых приносит больше всего денег.
Внимание! Мнение людей, отвечающих на вопрос,
может не совпадать с мнением редакции.
Какие языки программирования выгоднее учить?
КАРТЕР ПЕЙДЖ
технический руководитель Google
«КОРОТКИЙ ОТВЕТ: УЧИТЕ C ИЛИ C++.
Возможно, вам никогда не придётся пользоваться им
на работе, но вы многому научитесь, освоив его. Самые сложные задачи, с которыми сталкиваются лучшие программисты, так или иначе требуют знания C.
Вот некоторые вещи, основанные на C:
ВИРТУАЛЬНАЯ МАШИНА JAVA
БОЛЬШАЯ ЧАСТЬ LINUX
PYTHON
ЯДРО MAC OS X
WINDOWS (С И 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: это означает, что интерпретатор не управляет памятью автоматически. И так далее».
фотографии via Shutterstock, Aurelio Sánchez Escudero, Lundgren Lindqvist
Комментарии
Подписаться