15 мов, які потрібно знати кожному програмісту
- Тед Ньювард, директор і відповідальний за взаємодію з розробниками в компанії Smartsheet
- Нішан Панта, фахівець з комп'ютерної інженерії, розробник на мові Python
- Естебан Фаргас, займаюся розробкою додатків і беру участь в змаганнях з програмування
користувачі сайту Quora склали свої списки мов програмування, які бажано знати кожному програмісту.
Тед Ньювард, директор і відповідальний за взаємодію з розробниками в компанії Smartsheet
Мій список включає наступні мови:
- C ++. Саме на цій мові написані багато з нижче зазначених платформ (JVM, CLR, Node та інші). Крім того, з його допомогою вам буде простіше зрозуміти, як вручну виконувати оптимізацію пам'яті.
- C # або Java. Ні, вам не потрібно знати відразу обидва. Вивчення одного з цих об'єктно-орієнтованих мов дуже схоже на вивчення іншого.
- HTML. Я не вважаю його одним з мов програмування, але інші дотримуються саме цієї думки, тому ...
- CSS. Вкрай необхідний для будь-яких видів веб-розробки.
- JavaScript. Його більш сучасний і приємний варіант, а не та погань, якої ми користувалися 20 років тому. Зауважте: сам язик не сильно змінився з того часу і аж до нинішнього моменту. Ми, а саме, програмісти, які його використовують, ось хто дійсно змінився.
- SQL. Знадобиться для роботи з реляційними базами даних.
- Lisp. Так, Lisp. Або, якщо бути більш точним, "одне з втілень цієї мови". Підійде Clojure, Lisp, Scheme, Nu або щось на зразок того. Ви повинні знати, що являє собою гомоіконний мову, а також розуміти, як при використанні правильних інструментів зникають кордони між кодом і даними.
- Smalltalk. Ага. У будь-якій основі графічного інтерфейсу, побудованого на базі власних апаратних засобів (Windows, macOS, OS / 2, X / Windows, Android, iOS і інші), використовуються ті ж самі базові принципи, що були сформульовані і втілені в Smalltalk ще в 60 ті роки.
- Ruby або Python. Вам необхідно знати хоча б один динамічний мову програмування. Сюди ж підходить Javascript, але тільки якщо ви спочатку вивчіть саму мову, без жодних DOM-моделей, які можуть значно спотворити початкову картинку (React, Angular, VueJS - у всіх них містяться ці самі "DOM-моделі", про яких і ведеться мова .) до речі, як тільки ви розберетеся з Lisp, вам стане набагато простіше розуміти JavaScript.
- AspectJ. Знайомство з аспектно-орієнтованим програмуванням повністю змінить ваш погляд на об'єкти, і це прекрасно.
- Haskell, ML, Ocaml або Miranda. Витратьте деякий час на функціональні мови, в яких відсутні об'єкти.
- Bash, або zsh, або інший сценарій командної оболонки. Тому що далеко не кожна проблема або завдання в програмуванні повинна вирішуватися за допомогою повноцінного додатка.
- F #, Scala, Clojure або будь-який інший об'єктний / функціональний гібридний мова програмування. Тому що як тільки ви розберетеся з азами і засвоїте базовий набір, до якого відносяться перші 11 мов програмування з цього списку, ви будете готові до чогось, що буде зовсім непросто вивчити.
- Swift і / або Kotlin. Обидва відносяться до різновидів об'єктно-орієнтованих мов і мають деякі вбудованими функціональними особливостями. Вивчивши їх, ви будете готові до роботи над мобільними додатками.
- x86 або ARM-асемблер. Уміння читати на мові асемблера дозволить вам налагоджувати код без використання вихідного коду.
І так, я дійсно знаю все вище перераховані мови. І я навіть викладаю багато з них.
І немає, вам не потрібно знати їх все, щоб стати досить компетентним програмістом. Якщо ви хочете стати просто хорошим розробником, вам потрібно знати один з основних мов (HTML / CSS / Javascript) + мову для бекенд-програмування (найчастіше, це C #, Java, Python, Ruby або NodeJS-Javascript) + SQL, якщо ви використовуєте систему керування базами даних (RDBMS). Цього буде цілком достатньо.
Однак вивчення всіх інших мов - це саме те, що дозволить вам перейти від «рядового» до «ведучому» програмісту, а після досягти максимального рівня знань і умінь.
Нішан Панта, фахівець з комп'ютерної інженерії, розробник на мові Python
Я дотримуюся так званого мовного агностицизму, тому якби хтось під страхом смертної кари змусив мене скласти подібний список, то він би виглядав наступним чином:
1. P ython. Так як він украй зручний і простий для прототипування, а також завдяки існуванню величезної кількості фреймворків з відкритим вихідним кодом. Крім того, не зайвим буде згадати широко розвинене співтовариство.
2. C. Тому що з його допомогою можна чітко зрозуміти, як все працює. Дуже добре підходить для виконання нескладних завдань.
3. C ++. Також для виконання нескладних завдань. Підходить для використання об'єктно-орієнтованих парадигм. Крім того, може використовуватися для ряду інших завдань.
4. Bash. На перший погляд робота з ним може викликати подив і навіть деякі труднощі. Однак як тільки ви його освоїте, будь-які процеси автоматизації ви будете проводити з його допомогою.
5. S cala. Використовується в якості гібрида функціонального і імперативного мови програмування. З його допомогою можна створити дивовижні речі.
6. Javascript. Найпотужніший мову для веб-розробки. Особисто мені подобається "чистий" JS (варто враховувати, що в бізнес-процеси - це точно не моє).
7. Java. Для виконання завдань в об'єктно-орієнтованому програмуванні. І для використання Spring framework.
8. Haskell. Кожен програміст повинен знати парадигми функціонального програмування.
9. PHP. Якщо вам потрібно виконати щось, пов'язане з веб-розробкою. На мій погляд, ця мова точно не є символом зручності і простоти.
10. R. Для статистичного аналізу. Особисто я навіть не пробував з ним працювати, так як мені більш ніж непогано з самим Python.
11. HTML. Як я вже говорив, зазвичай я не займаюся веб-розробкою. Однак іноді на роботі від мене потрібно показати те, що було виконано в бекенд. В такому випадку знання HTML є необхідністю.
12. Markdown. Один з найбільш часто використовуваних мов розмітки. Як правило, я його використовую для якихось позначок, написання файлу README і багато чого іншого.
13. VimL / vimscript. Раніше за допомогою VimL я писав скрипти для створення призначених для користувача плагінів і конфігурацій для vim. Це один з тих скриптових мов, працювати з якими наважуються далеко не всі.
14. CSS. Використання CSS час від часу зовсім не зашкодить вашому HTML.
15. Matlab / Octave. З його допомогою я раніше виконував складні обчислення. Однак тепер я все це роблю на Python завдяки NumPy.
Естебан Фаргас, займаюся розробкою додатків і беру участь в змаганнях з програмування
- Java: Компанія Oracle напевно непогано так доплатити вашому університету, щоб ви вивчали саме цю мову в якості вступного в об'єктно-орієнтоване програмування. Він також буде корисний, якщо ви хочете брати участь в змаганнях з програмування.
- C / C ++: В принципі, дуже схожий на вказаний вище Java. До речі, я ці дві мови все ж сприймаю як один.
- C #: Непоганий мову, вийшов в результаті змішування двох вищевказаних мов.
- HTML: Є основою всієї мережі. Однак все ж не ідеальний.
- CSS: Дозволяє красиво виглядати різних речей в інтернеті. Також далеко не ідеальний.
- JavaScript: Дозволяє вибудовувати логічні схеми для інтернету.
- Python: Непогано також мати іншу мову програмування і набір парадигм, щоб написати бекенд для додатка. Крім того, на даний момент є загальноприйнятою мовою для технологій машинного навчання.
- Ruby: Ще один відмінний мову для створення бекенд. На його вивчення не піде багато часу.
- Golang: Зібрав в собі всі приємні функції, які є в різних мовах групи C. Він прекрасний. За допомогою його суміщеної моделі можна виконувати великомасштабні проекти.
- Scala: Також дозволяє створювати дійсно відмінне професійне програмне забезпечення. Знайомство з функціональної парадигмою може стати вкрай цікавим і щедрим на цікаві завдання.
- Haskell: Вивчення функціональної парадигми на максимальному рівні.
- Lisp: Те ж саме, що і вище наведений Haskell, тільки в ще більш незвичайному варіанті виходячи з неймовірно химерного синтаксису.
- Bash: Це взагалі мова чи ні? Так чи інакше, непогано було б їм оволодіти в якості одного із зручних інструментів розробника.
- SQL: Використовується для роботи з базами даних.
- PHP: Мова, який в минулому столітті використовувався для створення бекенд.