Як мені боротися з необхідністю знати кілька мов програмування? [зачинено]


25

Я порівняно молодий програміст. Мені 23 роки і я займаюся професійним програмуванням близько 5 років.

Оскільки більшість програмістів я почав займатися з C, навчився цікавої збірки x86, а потім знайшов C ++, який виявився моїм найбільшим захопленням у світі програмування. Програмування на C і C ++ змушує вас вивчати конкретні API, ліфти та рамки для кожної платформи, і кожен з них вимагає постійного вивчення та експериментів. Через деякий час мені довелося перейти на Java та C #, оскільки попит в моєму регіоні в основному на ці мови. За допомогою цих мов я увійшов у світ веб-розробки, а потім мені довелося вивчити JavaScript. Розробка для .NET Framework спочатку була захоплюючою, але я постійно відчував, як мене зав'язує Microsoft (і, звичайно, .NET Framework відштовхує мене від Linux). Для розробки робочого столу я міг зробити майже все, що робив з .NET, використовуючи C ++ з Qt, але для веб-розробки я повинен був шукати альтернативу. Швидко я знайшов Django, а потім перейшов до вивчення Python, щоб я міг використовувати Django. Сьогодні я навчаюсь розробці iOS за допомогою Objective-C.

До цих пір було досить легко вивчити всі ці мови (C ++ мене добре навчив), але я переживаю, що коли-небудь я не зможу відстежувати їх усіх. Просто для уточнення. Єдиними мовами, які я вивчив, тому що мені довелося це бути C # та Java. Всі інші я навчився заради задоволення, тому що люблю програмування та вивчення нових речей. Також я люблю зберігати свої навички чітко на робочих столах, Інтернеті та мобільних пристроях.

Моє запитання: Як ви відстежуєте кілька мов програмування? (Я маю на увазі, слідкуйте за змінами в цих мовах і зберігайте чіткі навички) і: Чи є така річ, як достатньо мов програмування?


20
Як ти наважишся навіть думати про те, щоб не вивчати більше мов !?
Mateen Ulhaq

9
"Кожен раз, коли я дізнаюся щось нове, це виштовхує мої старі речі з мозку. Як і тоді, я проходив домашній курс виноробства та забував, як водити".
Дін Хардінг

1
Програмування - це не освоєння синтаксису мови X, програмування - це навчитися програмуванню. Дізнайтеся, як правильно вибрати мову для правильної роботи, а потім, коли ви виберете цю мову, вивчіть API та синтаксис, а потім робіть те, що ви робите будь-якою іншою мовою ... ПРОГРАМА!
Кріс

6
деякі мови, які ви ніколи не забудете; інші, яких ви сподіваєтесь забути
Стівен А. Лоу

3
Ви здебільшого займаєтесь ООП. Ви повинні вивчити інші мови парадигми, як функціональна мова Haskell, а потім подумати про відстеження.
Vigneshwaran

Відповіді:


27

Особисто я вважаю, що "слідкувати за мовами" - це марно витрачати час. Завжди добре підбирати нові популярні мови, але як тільки у вас під поясом є така популярна і усталена мова, як C ++, Python тощо, вам не варто турбуватися. Якщо ви хороший програміст, мова - це лише набір ключових слів.

Є лише стільки істотних парадигм; можливо, старі собаки не можуть навчитися нових хитрощів, але насправді не так багато нових хитрощів. Якщо ви переживаєте, що ваша функціональна / об'єктно-орієнтована / керована подіями / будь-яка мова може не тривати, вивчіть іншу парадигму; але не переживайте занадто сильно за правильний вибір мови.

І що робити, якщо ви забудете ключове слово або два після того, як ви ненадовго відійшли від мови? Тому ми маємо Google.


2
Тільки не дозволяйте своєму начальникові бачити. :) Або непрограміст. Вони подумають, що програмування так просто, і чому програміст заплатив би за таку легку роботу.
Mateen Ulhaq

4
Я думаю, що це правда, якщо ви залишаєтесь у певній парадигмі. Напр. О.О. / імператив. Це руйнується, якщо дивитися на мову, яка не є обов'язковою.
Річард

@Richard: Я знаю, ви не маєте намір припускати, що ОО обов'язково має на увазі імператив, правда?
Френк Ширар

@Frank: Так, а не дуже часто використовувана група мов (Java, C #, C ++), які є обома ...
Річард

1
"(a) мова - це лише набір ключових слів", - я не згоден. Кожна платформа має локальні, ідіоматичні способи здійснення справ. Бути хорошим програмістом на платформі X передбачає набагато більше, ніж просто синтаксис. Наприклад, відмінний код JavaScript не відбудеться, якщо я припускаю, що моє мислення .NET OO - все, що мені потрібно.
Беван

54

Я переживаю, що коли-небудь я не зможу відстежувати їх усіх.

Через 30 років дозвольте це сказати.

Так, ти втрачаєш сліди.

Так?

Тому вони пишуть довідкові посібники.


14

Справжня користь від вивчення кількох мов - це різні парадигми та моделі та способи мислення, які вони вам надають.

Знання Яви та її єдиного успадкування повинно було сформувати ваше уявлення про C ++ та його багаторазове успадкування. Ваші знання про Java та її GC повинні були сформувати ваше уявлення про C ++ та керовану користувачем пам’ять. Ваше знання C ++ та його шаблонів повинно було сформувати ваше уявлення про Яву та її загальну інформацію. Усі ці відносини працюють, звичайно.

Якщо ви ніколи не писали на функціональній мові, ви не оціните те, що <algorithm>намагається зробити бібліотека C ++ і чого не вистачає, не маючи функцій першокласного громадянина (як мінімум до C ++ 11). Якщо ви ніколи не писали динамічно набраною мовою, ви не зрозумієте меж того, що статичне введення може і що не може зробити для вас. Якщо ви ніколи не писали мовою без змінного стану, ви не розумієте штрафних санкцій, які накладає на вас змінна держава.

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


8
+1 Його справа не лише у вивченні кількох мов (вивчення мов - це легка частина). Вивчення різних парадигм - це те, що важливо. Я особисто вважаю, що на рівні університету студенти повинні зазнавати цих різних парадигм. Це сумний стан справ, коли в наші дні існує так багато університетів "МакДжава (Тм)" (Зверніть увагу, я не кажу, що Ява погано скаже, прочитайте повний контекст, будь ласка.). :(
Темна ніч

8

Моє запитання: Як ви відстежуєте кілька мов програмування? (Я маю на увазі, слідкуйте за змінами цих мов і зберігайте свої навички різкими)

Написати код. Якщо ви хочете бути в курсі оновлень мови, просто продовжуйте писати код.

Чи існує таке поняття, як достатньо мов програмування?

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

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

Так ні, немає такого поняття, як "достатньо". Але, безумовно, є таке поняття, як "не варте клопоту".


4

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


4

Ніколи не припиняйте вчитися; але розумій, що ти ніколи про все не знаєш. У вас завжди будуть деякі середовища, де ви більше вільно володієте. Не хвилюйтеся, просто продовжуйте веселитися.


Правда, ніколи не припиняйте вчитися, а саме FOCUS. Вивчити все - це як бігати як фу ** курка без голови, і врешті-решт, ви добре в НІЧОМУ.
Славек

@Slawek: "врешті-решт ти хороший у НІЧОМУ". Майже. Кращою версією може бути: Зрештою, речі, в яких ви були хороші, були замінені новою технологією, про яку ви не маєте поняття.
S.Lott

3

У вас достатньо мов програмування, коли ви відчуваєте, що закінчили. Знання кількох мов - це чудово, але я не знаю, якщо знання 12, коли ви використовуєте 2 на роботі, дає більше ніж контекстна користь. Немає нічого поганого в тому, щоб знати більше мов, але інший час вам, мабуть, краще вдосконалити свої знання з мов та дисциплін, які вам потрібно використовувати більшість. Як і розмовні мови, ви хочете більше володіти тими, які надають цінність у вашому житті.

Я можу згадати декількох програмістів, які хвалилися, що вони знали кілька мов, але писали код однаково у кожному, і це не обов'язково добре.

Крім того, коли ви дорослішаєте, час допоможе скласти свою думку (у мене набагато менше часу вчитися на стороні, ніж я, перш ніж я одружився, мав дітей, став письменником-позаштатним, почав займатися питаннями кар’єри та моя пам’ять почала йти на південь.


3

Я вивчив багато мов за останні 25+ років. Через деякий час деякі стають менш корисними і забуваються (Perl). Давайте навіть не говорити про збірку 6502, Apple BASIC, Lisp, Prolog, Pascal, SPAN, FORTRAN ...

Інші мови зів’яли, то мені довелося перевчитися (Python) через 10 років. Не було сенсу йти в ногу з Python, для швидкої роботи не потрібно багато часу - Google / SO - ваш друг.

Зрештою, мова - це лише інструмент. Ви використовуєте його для роботи. Навик знає, що використовувати, коли. Якщо чесно, коли я почав використовувати C ++, я ніколи більше не хотів робити кодування C. Коли я вивчив C #, ніколи більше не хотів займатися C ++.


3
повідомлення про смерть Перла сильно перебільшені.
Філіп Поттер

Це нічого особистого проти Perl. Я працював над Unix, тому Perl був моєю зброєю вибору. Я створив досить прокляті великі технології, використовуючи це. Потім я перейшов до Windows. Тепер я знову повернувся, але додаток, який я розробляю, знаходиться в Python, тому використання Perl та Python, здається, мало сенсу.
Дейв

1

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

Я завжди роблю порівняння з тим, хто будує будинок, він не переймається своїм молотком, поки у нього є той, який він може побудувати. Йому може знадобитися ознайомитись з молотком (наприклад, вагою), але як тільки він ознайомиться з інструментом, він може побудувати фантастичний будинок. Звикнути до інструменту не так вже й складно, оскільки більшість "версій" інструменту досить схожі (це стосується молотків, але також і для мов розробки).

Під час навчання ми використовували Java (до цього я використовував ASP і VB5), але після закінчення навчання (близько 5 ~ 6 років тому) я навчився використовувати C # (і Javascript), перемикач роботи "змусив" мене перейти на VB.NET, наступне завдання дозволило мені використовувати обидві мови .NET (що я зробив) і навіть "дозволило" знову дозволити мені використовувати Java (для деяких застарілих інструментів, якими вони користувалися). На сьогоднішній день я працюю з X ++ (мова Microsoft Dynamics AX), але все ще роблю деяку розробку в .NET. Це лише мова, з якою я працюю в своїй щоденній роботі, мені також подобається вивчати нові мови, такі як F #, Ruby тощо. Навчання цих нових мов зайняло лише пару днів (просто щоб зрозуміти синтаксис) та інше того часу, коли ви просто граєте з мовою і будете поступово вчитися.

Мов так багато, але я схильний зосереджуватися лише на мовах, які насправді відрізняються (як F #). Я вважаю, що вивчення нових мов є цікавим і цікавим, тому що зараз я чудово, вивчити нову мову досить просто (принаймні, якщо думка однакова, C #, VB, Java рівні але, але, наприклад, F # зовсім інша) і я не дуже хвилююся.


1

Я розпочав свою кар'єру 5 років тому на vb6, перейшов до php, потім до Java та потім до .net. В даний час останній рік працюю на asp.net mvc2 і пробую свої сили і на mvc3

секрет у тому, що ніколи не слід застаріти, ти не можеш освоїти все на світі, тож турбуватися про це не можна


1

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

Пристосування до використання нових інструментів - це компроміс. ІТ-індустрія повна ажіотажу, і від них потрібно захищатись. Це починається з твердження: ні, я продовжую використовувати старий редактор (emacs?). Але час від часу доводиться вчитися новому. Вони справді покращуються з роками (3-4). Якщо у вас є можливість дізнатися нові речі на роботі з реальним проектом під рукою: не соромтеся, адже це буде весело! Найкращий спосіб розрізнити ажіотаж від справжнього нововведення - це дивитися на людей, які його використовують. Ви краще судите людей, ніж технології :)


1

Я б запропонував вивчити мови з різними парадигмами, такими як функціональні, ОО та логічні, оскільки вони такі різні.

Однак я б не обов'язково пропонував вивчати 3 функціональні мови або 3 мови OO.

Якщо ви добре вмієте читати, можливо. Але мені важко знову і знову вивчати подібні речі, які, як правило, майже однакові, але не зовсім, особливо такі матеріали бібліотеки, як живопис вікон, виклик бази даних, бібліотеки колекцій, де вам потрібно запам’ятати різні назви та умови, але які поводиться майже так само. Це був paintRect (xstart, ystart, xend, yend) або (xstart, ystart, ширина, висота)? Включити сюди "кінець", не включаючи його туди?

Але деяким людям важко навчитися цим речам.

Тому я б запропонував вивчити деякі мови, але глибоке вивчення кількох з них може навчити вас більше, ніж мова за мовою лише на поверхні. Можливо, не 2 мови на рік, але кожні два роки одна мова.


0

Я начебто з протилежного боку спектра. Я ненавиджу вивчати кілька мов, тому що ти вчиш прості речі і ніколи не отримуєш успіху в глибших проблемах. У той же час ви вивчаєте погану практику з інших мов.

Коли-небудь бачив, як хардкор Java розробник кодує в C ++, це безлад очікує вибуху ...

Проблема полягає в тому, що всі мови мають свої моменти, де абстракція починає просочуватися або грати проти вас. Ви можете вивчити синтаксис за 1 день, але знадобиться ефективно кодувати та не вносити помилок у 5 років. Чи використовуєте ви () або []? Чому malloc зробить ваш тривалий процес вичерпаним?

І вивчення парадигм - також цікава пропозиція. Оскільки використання настанов Java на C або настанов Perl у C #, ймовірно, перетворюється на приголомшливу демонстрацію того, як писати затуманений код.

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


0

Хтось ще десь запропонував, що "всі повинні знати 3 мови".

Я схильний погоджуватися. Ви повинні знати мову, що склалася (C / C ++, C # тощо), інтерпретовану мову (Python, Ruby тощо) та мову обробки тексту (Perl, Awk тощо). Я також думаю, що ви повинні знати мову сценаріїв оболонок (Bash, ці дні або оболонка живлення Windows). Ця ж порада стосується наборів інструментів та API.

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

Тож, швидше використовуйте технології, якими ви користуєтесь щодня, і залишайтеся там. Немає нічого поганого в тому, щоб поспішати в інших сферах інтересів, коли у вас є час. Зазвичай грамотному програмісту не потрібно довго вивчати нову технологію з урахуванням достатньої мотивації та блокування часу, щоб сидіти з нею.

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


-5

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

Було проведене дослідження, яке говорило про те, що вам потрібно 10 років навчання, щоб бути "хорошим" з чим завгодно (програмуванням, грою на гітарі, танцями тощо). І це правда, вам потрібно 5-10 років, щоб написати C ++ / python / тощо. щоб отримати навички, необхідні для розробки комерційного коду хорошої якості.

А це дурниця щодо мовних посилань? А де хороші звички програмування, які різні для кожної мови програмування. У якому посиланні ви знайдете належні практики управління пам’яттю та структури даних для C або Server Security безпеки?

Настільний, мобільний, серверний (!!!) - це абсолютно різні середовища. Ви вирішуєте, чи хочете "грати" все життя, або зосереджуєтеся на одному і отримуєте гідну роботу. Напевно, люди скажуть тобі фігня, що ти повинен знати кожну мову на землі, тому що вони намагаються зробити те саме, щоб покращити свої лайна робота. Але здогадайтеся, що вони ніколи не зможуть цього зробити, навіть не прочитавши «довідки» на Java, бо чого вони зможуть тоді? Точно НІЧОГО.

Так - вивчіть графічний дизайн, написання сценарію та флеш теж вам знадобиться! :) Я точно не знаю, що не так, але якщо ви одночасно займаєтесь клієнтом, сервером і мобільним телефоном - киньте свою роботу і не чекайте завтра, тому що вам потрібно це зробити зараз!

Моє запитання: Як ви відстежуєте кілька мов програмування?

Ваше питання має бути, як не слідкувати за ними. Моя порада, киньте покемон і будьте добрі у тому, що вам подобається.


1
Ви знаєте, що я правий - хто заробляє більше? Старший інженер Java в IBM або "програміст-о-графікан-о-комп’ютерний фіксатор-о" в якійсь місцевій компанії з розробки веб-сайтів? Ну, я знаю хороших графіків, які займаються лише графікою і стягують 10 000 доларів за "дурний" банерний проект ... та деякі хлопці, які "я знаю все", які роблять кілька дурних веб-сайтів для дурного місцевого бізнесу за 150 доларів (які включають заняття графікою), виправляючи комп’ютери тим часом і т. д. Оскільки вони знають так мало в такій кількості областей, що все, що вони насправді можуть зробити, це встановити тему Wordpress або перевірити, чому msoffice не працює.
Славек

-1 за те, що ви більше не гріха, ніж відповідь, і за те, що ви плутаєте свій особистий досвід зі світом. Я хотів би побачити, про які "дослідження" ви маєте на увазі. Поп-поняття, що відбувається в ці дні, полягає в тому, що для розвитку досвіду роботи в галузі потрібно 10 000 годин активної практики. Це було популяризоване працями Малкома Гладвелла. Це, мабуть, непогано, як правило, але навряд чи це закон фізики. 10 000 годин - це п'ять років 40 годинних тижнів, і, звичайно, багато хто з нас ставлять набагато довші години на ранніх етапах своєї кар’єри.
Чарльз Е. Грант

Ні, у них немає спеціалізації. Їх спеціалізація - програмування. Мови програмування - це просто інструменти торгівлі, які потрібно брати за потреби та відкидати, коли вони не потрібні. 10 000 годинна річ була популяризована книгою Малкольма Гладвелла. Але ти зрозумів, що він говорить? Він казав, що, наприклад, музичний геній займає 10 000 годин. Він не сказав, що для гри на фортепіано знадобилося 10000 годин.
Antonio2011a

Якби ніхто ніколи не вивчив більше однієї мови, ми б всі програмували в асемблері. Сьогодні я використовую Groovy, Java, Javascript, SQL, Ant та Selenium. Мені не потрібно 7 людей у ​​моїй команді. Мені потрібні люди, які можуть підібрати нову технологію і зробити так, щоб все сталося.
кевін клайн
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.