Яку мову програмування краще вчити? Думка фахівців програмістів

КОРОТКА ВІДПОВІДЬ: ВЧІТЬ C АБО C++.

Можливо, вам ніколи не доведеться користуватися ним

на роботі, але ви багато чому навчитеся, освоївши його. Найскладніші завдання, з якими стикаються найкращі програмісти, так чи інакше вимагають знання C.

Ось деякі речі, засновані на C:

Все, що лежить в основі комп’ютерних технологій, складно влаштоване і сильно впливає на продуктивність, коли створили на C — з невеликим вкрапленням асемблера.

C поліпшить ваші навички в Java. Ви розберетеся, коли віртуальна машина використовує стек, а коли — купу, і що це значить. Ви будете інтуїтивно розуміти, як відбувається збирання сміття. Ви будете краще розуміти, як використовувати примітивні типи даних та об’єкти.

C поліпшить ваші навички в Python. Його система класів багато в чому ґрунтується на C++. Ви навчитеся писати грамотний, добре організований код, що дозволить вам легше працювати з ним в майбутньому. Ви навчитеся обережніше поводитися з глобальними змінними.

C поліпшить ваші навички в Objective-C. Ви навчитеся керувати підрахунком посилань і зрозумієте, яка частина коду повинна «володіти» об’єктом. Ви зможете уникати витоків пам’яті.

Так що краще — C або C++? Я віддаю перевагу C++, тому що, хоча вони дуже близькі, C++ підтримує об’єктно-орієнтоване програмування. Навіть якщо ви будете працювати тільки з функціональними мовами, об’єктно-орієнтоване програмування навчить вас організовувати код таким чином, щоб ви могли створювати і підтримувати великі проекти.

Можливо, ви не будете заробляти так само багато, як фахівці з COBOL (Один з найстаріших мов програмування), які можуть раптово знадобитися. Але після C ви зможете вивчити будь-яку іншу мову. Якщо в індустрії комп’ютерних технологій  і є сталість, то воно полягає в наступному: сьогоднішня новинка може через кілька років опинитися старомодною. Навчитеся навичкам, що дозволяють набувати нові навички, і все у вас буде добре».

«Якщо ви вмієте правильно організовувати дані, абсолютно не важливо, якою мовою ви володієте. Є три тісно пов’язані речі, які вам потрібно знати:

  • Основні структури даних і алгоритми (зв’язні списки хеш-таблиці, збалансовані та інші дерева пошуку, черги і купи);
  • Моделювання даних, отриманих з реального світу (розуміння логіки вже збудованих моделей, уміння працювати зі стандартними і сторонніми бібліотеками);
  • Будь-яка мова програмування, який вам зручний. Якщо ви добре знаєте мову і можете довести це на ділі, то зможете багато на цьому заробити. Напишіть що-небудь корисне або просто класне, і якщо ви не боїтеся критики (деколи — жорсткої), викладіть код на той самий GitHub. Якщо ви добре засвоїте якусь мову, то зможете вивчити будь-який інший.

Взагалі ж я б запропонував вивчити кілька мов з різними особливостями і рівнями абстракції, так як знання лише однієї мови сильно обмежує вас у підходах до вирішення будь-якої задачі.

Якщо брати найвищий рівень, то я б порадив один з трьох наступних мов: Perl, Python, Ruby (і як варіант Lua). У них вбудовано багато корисних структур даних: хеш-таблиці, динамічні масиви та інші. Також вони спрощують роботу з пристроями введення-виведення і пропонують модулі і бібліотеки, які дозволяють відразу перейти до вирішення проблеми, а не писати проміжний код, який і так має бути включений в будь сучасну мову програмування;

  1. Імперативний/процедурний мову не дуже низького рівня: C, Go, Fortran (мій вибір — C);
  2. Імперативний/об’єктно-орієнтована мова: C++, C#, Java, Ada (я б віддав перевагу C#, тому що його створювали, враховуючи помилки Java);
  3. Функціональний/мультипарадигмальный мова: Objective Caml, Clojure, Common LISP, Erlang, F#, Haskell, Scala, Scheme. Я схиляюся до OCaml і Scala, тому що їх синтаксис простіше, ніж у інших, хоча це, звичайно, суб’єктивно.

Якою б мовою ви не вибрали, вивчіть його по-справжньому добре і наберіться досвіду роботи з ним. Вміти створювати реалізацію класу в Java — це здорово, але якщо ви довідаєтеся, як в Java працює збірка сміття (або її недоліки), то станете більш класним програмістом. Добре знати, що в Perl можна використовувати модулі, але зовсім інша справа, якщо ви розумієте, коли вони просто інтерфейси для коду на C: це означає, що інтерпретатор не управляє пам’яттю автоматично. І так далі».

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
(0 голосов, в среднем: 0 из 5)

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *