(Чому) Я повинен вивчити нову мову програмування? [зачинено]


97

Я досить досвідчений в Java, C / C ++, JavaScript / jQuery і пристойно хороший у Objective-C. Я досить продуктивний з мовами та їх відповідними рамками, і створюю системи корпоративного рівня (а також дрібномасштабні) з достатньою легкістю, зберігаючи код "чистим" та ремонтопридатним (так, я можу прочитати власний код через шість місяців :)

Якщо це не дозволено платформою (iPhone, iPad тощо) або клієнтом / організацією, просто "чому" я повинен вивчити нову мову програмування? Задля розваги"? І що робити з тією забавою, якщо я не збираюся з цим нічого робити?

Багато моїх однолітків готові зануритися, щоб вивчити "наступну нову річ / мову", і це, як правило, Python, Ruby або PHP (лише назвавши кілька популярних). Тепер, просто знати мову само по собі є безрезультатним IMHO. Ви також повинні знати рамки, вивчати їх використання / API, а також "хороші практики впровадження" тощо.

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

Тож чому ЧОМУ я (або хтось із цього питання) повинен вивчати нову мову програмування, окрім "це весело, тож давайте спробуємо це" - якщо вкладення часу може бути не вартим цього в перспективі?


6
programmers.stackexchange.com/questions/118338/… Можливо, вас зацікавить відповідь, яку я дав gere.
deadalnix

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

3
Я запитаю, чому я не повинен вивчити нову мову?
користувач

2
@ZacharyK, навіть якщо робота була для розробника Java, а кандидат був супердупер на Java. Здається, що ти можеш стріляти собі в ногу.
NimChimpsky

2
Там дуже багато хлопців із Супер Яви. Мене так цікавить те, що ви дізнаєтесь через 6 місяців, як те, що ви знаєте зараз. (Звичайно, я, здається, весь свій час витрачаю на Erlang, CoffeeScript та PHP)
Zachary K

Відповіді:


178

Від Прагматичного програміста , порада № 8 "Регулярно інвестуйте у свій портфель знань":

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

Йдеться не про чергову "нову річ". Йдеться про мислення по-різному поза вашими нормальними моделями мислення.

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


Відмінний момент. Таке мислення призвело до того, що я спробував RavenDB над проектом, і я багато чого навчився після багатьох років застрягання у колії SQL Server.
Боб Хорн

52
Я думав, що це коли у тебе є молоток, все виглядає як твій великий палець
Zachary K

2
Я повністю згоден. Я також додам, що вивчення іншої мови допомагає краще зрозуміти аспекти мов, які ви вважали раніше. Це також допомагає розрізнити, що таке "справжні" основні поняття / зразки / обмеження програмування та які лише артефакти вашого конкретного набору інструментів. Наприклад, якщо всі мови, які ви знаєте, слабо набрані, ви ніколи не знаєте, що існує сильне введення тексту, і ніколи не дивуєтесь чому! Отже, ваші продукти можуть постраждати від продуктивності чи безпеки, навіть якщо вони можуть перевершити час виходу на ринок ;-).
JJC

3
Прагматичний програміст - одна з найкращих книг програмування, яку я коли-небудь читав. Справді добре!
Soner Gönül

Я дійсно погоджуюся з "Це про мислення по-різному поза вашими нормальними моделями мислення". Коли я вивчив Python, я отримав новий світ способу мислення.
Yoo Matsuo

80

Чому люди піднімаються на гору. Еверест? Або пробігти 100 миль за 24 години ? Чому ми приймаємо будь-які виклики? Тому що там. Я не бачу нічого поганого в "Ars gratia artis". Настає момент, коли навчання заради навчання стає власною нагородою. Але якщо ви хочете більш вагомих причин вивчити нову мову, ось декілька:

Нові способи вирішення проблем Вивчення нової мови, реально витрачаючи час на занурення, дає можливість знову програмувати як новачок. Ця нова перспектива може навчити вас технікам, які можуть перенести на стару мову. Подумайте про вплив, який Ruby на Rails мав на ASP.NET MVC, або про те, як Java Hibernate переноситься на C # (разом із незліченною кількістю інших рамок, що впливають на розвиток .NET). Вплив на різні мови може навчити вас нових способів вирішення проблем.

Правильний інструмент для правильної роботи Усі згадані вами мови - це гібриди OO / Процедура (або суто процедурні у випадку з C). Спробуйте ввійти у функціональну мову чи дві. Спробуйте впровадити фабрику в Ерланге за допомогою рекурсії і спостерігайте, як ваша щелепа потрапила в підлогу, коли 20000! повертається за 5 секунд (відсутність переповнення стека на сайті). Потім погляньте на силу масштабування вашої програми для прокручування протоколів чисел та розбору з меншим кодом і за менший час, ніж знадобиться, щоб отримати два екземпляри JVM, що розмовляють через RMI або SOAP. Вивчення інших мов / рамок, спрямованих на вирішення конкретних проблем, дасть вам більше інструментів.

Знайомтесь з новими людьми / розширюйте свою мережу Дайвінг на нову мову відкриває вас новій спільноті. Знайомство з новими людьми - це добра справа для вашої кар’єри та особисто.

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

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

Тому що це там Вивчіть нову мову, бо хочете.


3
+1 Javascript може бути функціональним, але це, звичайно, схоже на те, що в ОП, можливо, не вистачає декількох парадигм із їх панелі інструментів. А більше досвіду роботи з функціональними мовами дасть глибше розуміння існуючих мов, наприклад, із шаблонами C ++
jk.

+1 для Зберігайте свіжим, він справді відчуває себе добре, працюючи над чимось іншим
Mona

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

1
LOL, так, це не те, що робить Ерланг чистою функціональною мовою, але це повна зміна точки зору. Імперативними мовами нас рекомендують уникати рекурсії для всіх, окрім найбільш тривіальних випадків, а рекурсія функціональних мов - це спосіб життя. Відповідність шаблонів на відміну від if / else або перемикача / корпусу теж досить крута.
Майкл Браун

2
Спробуйте впровадити фабрику в Ерланге за допомогою рекурсії і спостерігайте, як ваша щелепа потрапила в підлогу, коли 20000! повертається за 5 секунд (відсутність переповнення стека на сайті). Це один із найсильніших аргументів для вивчення функціональної мови, який я коли-небудь бачив. Ніколи не думав, що це може бути настільки ефективно.
Олег Єремеєв

37

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

З мовами програмування те саме. Нова мова програмування може "відкрити" ваш розум на деякі аспекти програмування.

З огляду на ваш поточний досвід програмування, я рекомендую вам вивчити якусь функціональну мову, наприклад, Erlang або Scala. Нарешті, Clojure - теж дуже тверда мова.

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


22
+1. "Мова, яка не впливає на те, як ви думаєте про програмування, не варто знати". - Алан Перліс
ruakh

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

@DonalFellows: Я думаю, у нас є деякі "психічні процеси", які не можна висловити словами. Але я називаю це не "думками", а "почуттям", "рефлексами", "інтуїцією" і т. Д. Я думаю, що правильна думка повинна бути вираженою з точки зору якоїсь мови. Тож для мене те, що не має мови, може жити, обробляти, реагувати, відчувати ... але не думати. Але це віра, заснована на інтуїції, а не на будь-яких реальних доказах. А також трохи поза темою, дійсно :)
egarcia

Абсолютно згоден, вивчення мов лише тому, що вони є новою класною мовою програмування, не має сенсу. Вам слід дотримуватися дуже різних і намагатися не охоплювати їх занадто багато. Для того, щоб бути хорошим у чомусь, знадобиться чимала кількість часу (можливо, 10+ років), неважливо, грає він на музичному інструменті, готує чи програмує.
Містер Сміт

2
@evilcandybag: Як це буває, я фактично можу продемонструвати джерело: sciencemag.org/content/306/5695/496 , sciencemag.org/content/suppl/2004/10/15/1094492.DC1/… (PDF).
ruakh

26

Ви не тільки хочете вивчати нові мови, ви хочете вивчати мови, які відрізняються від тих, які ви вже знаєте. Якщо ви знаєте, що вивчення Java Java C # насправді не викличе вас, вони досить схожі. В ідеалі ви повинні вибрати мову, яка сильно відрізняється від тієї, яку ви знаєте. Якщо ви знаєте Java, JavaScript та Objective-C, ви хочете чогось зовсім іншого

Як от:

Рубін весело слабо набрав мову ОО

Prolog Логічна мова програмування дуже різна

Erlang Concurrency і Fale Tolerance зробили дуже добре

Scheme Go читайте SICP і досягайте просвітлення

Haskell Одна з найпотужніших систем у світі, якщо вона компілює, ймовірно, спрацює, а також убереже вас від усяких дивних помилок та багато іншого.

Або просто візьміть сім мов за сім тижнів, що зробить те, про що говорить заголовок.


2
+1! Вправа, яку я зараз роблю, - це реалізувати один і той же алгоритм (сортування злиття) різними мовами: це дійсно дає мені відчуття, скільки існує способів виразити одне і те ж обчислення. У мене вже запущені версії C, C ++, Pascal, Java, Scala та Haskell. Python, Ruby, Modula2, Scheme вже на шляху. Я вважаю, що ви можете так багато навчитися, переглядаючи різні мови програмування! Роблячи одну річ однією мовою, я можу отримати багато ідей, як краще втілити її в іншій мові.
Джорджіо

3
Мені це подобається за винятком того, як ви описуєте Haskell. Ви все ще можете написати неправильний код, який компілюється. (Правильність типу - не єдина вимога до загальної коректності.) Причина вчитися Хаскеллу полягає в тому, що він нотаріально дуже близький до математики і має ліниву модель оцінювання; це повинно похитнути уявлення більшості програмістів про те, що таке програмування.
Стипендіати доналу

Думаю, варто спробувати Prolog. Коли я вперше дізнався це, я здивувався. Як можна робити речі, лише написавши кілька символів.
користувач

3
На моєму досвіді @DonalFellows, якщо ти вправляєш типи в Haskell, решта програми, як правило, пише сама.
tobyodavies

1
"Ruby - це весело слабо набрана мова OO": справді Ruby дуже слабо набрана або досить динамічно набрана?
Джорджіо

15

Ваше питання є таким провідним, що мене просять задати таке питання:

Якщо ви програміст за професією, чому б у світі ви не хотіли б навчитися чомусь новому, щоб додати до свого професійного досвіду?

Ваше запитання мені дуже схоже на ставлення до студента, яке я колись мав. За рік-два до Y2K я викладав клас Кобола (як факультатив), на прохання директора служби кар’єри в університеті, де я тоді викладав. У нього було так багато компаній, які наближалися до нього з можливістю роботи для програмістів Cobol, що він думав, що ми будемо робити нашим студентам повагу, не даючи їм можливості навчитися майстерності та доповнити їх набір навичок.

У мене був студент, який прийняв клас як свій останній факультативний клас, який закінчив . У той час він також працював програмістом C. Він взяв клас Кобола, бо не мав інших варіантів і хотів отримати ступінь. Тож він прийшов до класу з чіпом на плечі.

Я вже знаю С, і я його використовую професійно, тому я не знаю, чому в світі, хто б хотів або навіть потребував вивчити Кобола.

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

Він повинен був написати свою програму на С, що він і зробив, і він показав мені свою програму. Одночасно я показав йому свою версію програми Cobol.

Потім я кинув йому криву кулю:

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

Він зайняв день, щоб скласти нову версію програми, яка працювала з новим форматом даних. Він передбачав зміну щонайменше 20 або 30 рядків коду та зміну декількох функцій та модулів.

Тоді я показав йому зміни, які мені потрібно було внести в свою програму Cobol. Я змінив пункт малюнка, щоб він відображав новий формат даних.

Я не впевнений, що він повністю зрозумів урок цієї вправи, але принаймні кинув скарги на решту семестру.

Отже - у відповідь на ваше запитання: Ви повинні вивчити нові мови, тому що хочете ВЧИТИ. І якщо ви не хочете вчитися - більше сил вам ... (я просто не впевнений, що найняв би вас із таким ставленням)


6
Хоча ваші наміри були добрі, якби я був тим студентом, я просто подумав би, що єдиною причиною, коли ваше додаток було легко змінено, було те, що ви знали про можливі зміни вимог. Якби програма була написана на мові C з однаковими знаннями, там також потрібно було б внести мінімальні зміни.
hspain

У мене був колега з подібним ставленням: "C та PHP заробляють мені гроші. Навіщо мені витрачати час на вивчення іншої мови?" Він більше не працює там.
greyfade

3
всі вимоги рано чи пізно змінюються! Це свого роду суть.
Захарій К

@hspain - насправді тому, що вся суть вправи полягає в тому, що Cobol трактує специфікації вводу-виводу як частину програми першого порядку, а не як щось, що відбувається в режимі laissez-faire на основі того, як ви написали і замовили свій Висловлювання вводу-виводу в C. І наголос на коментарі Захарія К, факт полягає в тому, що вимоги змінюються. - Так, ви можете структурувати програму на C таким чином, що вона менш крихка, коли змінюються такі речі, як вимоги вводу / виводу, але це передбачає мислення про програму зовсім іншим чином, ніж ви зазвичай робите при написанні програми С.
Zeke Hansell

Я не знав цього про кобол насправді. Колись мені, можливо, доведеться піти подивитись
Захарій K

12

Є кілька причин, чому вивчення нової мови може коштувати вкласти час:

  1. Збільшити розмір коробки інструментів - вивчення нової мови може забезпечити додаткові шляхи до вирішення технічних питань. Можливість нових інструментів може забезпечити кращий вибір мови / платформи для вирішення певних проблем, ніж інструменти / мови, які раніше знали. Найпростішим прикладом може бути приклад програміста, який знає лише C. Вивчення мови сценаріїв відкриває для нього інші можливості - щодо розгортання, налаштування середовища тощо.
  2. Отримайте доступ до нової платформи - відмінним прикладом може бути ціль C - якщо хочеться розвиватись для iOS, вивчення цієї мови є майже обов’язковим.
  3. Дізнайтеся про нові парадигми - деякі мови можуть мати кращий доступ до новіших парадигм. Використовуючи C в якості прикладу, може бути важко розробити веб-сервіси в стандартному ANSI C. Однак навчитися розробці в .NET, Java, PHP або інших нових мовах може пришвидшити розвиток веб-служб.

Вивчення нових мов може забезпечити негайну користь, як ви вже зазначали, у швидких та брудних рішеннях. Однак ці негайні рішення можуть змусити програміста дослідити та копати глибше архітектуру, пов’язану з новою мовою, щоб "правильно" її вивчити. Ці вправи на швидке навчання можна розглядати як інвестицію в дослідження того, чи варто новій мові додаткового часу на навчання.


11

Одним словом: товарність .

Ви відкриваєте свої перспективи працевлаштування, коли зможете показати, що у вас є можливість адаптуватися та вивчати нові речі. Звичайно, ви можете продовжувати писати додатки на тій мові, якою ви справді володієте мовою, але що відбувається, коли ви дізнаєтесь, що ваша улюблена мова вибору не має значення для галузі, в якій ви працюєте. Я фактично пам’ятаю час, коли ми використовували щоб писати власні веб-сервіси з нуля на C або C ++, сьогодні ми використовуємо інструменти, які роблять усі основні "веб-сайти" для нас (Think Rails тощо).

Сенс у тому, що ви, як і ті актори, які роблять телесеріал, і потім не можете легко перейти на що-небудь інше, тому що вони назавжди розглядаються як їх оригінальний персонаж. "Хто на Землі хоче, щоб капітаном Кірком був Індіана Джонс? !!". Те саме і з програмістами, які коли-небудь використовували один продукт. Звичайно, ви знатимете це як ніхто інший, але це не допоможе вам, коли до вас ставляться, як до вас, як до Fortran, який не може перейти до роботи з C #.

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

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


8

На цьому етапі своєї кар’єри вам слід вивчити нові мови, якщо ви думаєте, що вони зроблять вас кращим програмістом.

Більшість перелічених мов (Java / C / C ++ / Javascript / Objective-C) є звичайними OO / імперативом. Вивчення ще однієї мови OO / імператив, ймовірно, не навчить вас набагато більше про таке програмування. Якщо у вас немає особливого інтересу, немає сенсу вивчати аромат місяця на специфікації.

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

Найкраща причина для вивчення нової мови - це засвоєння навичок загального застосування. Для цього я б рекомендував глибоке занурення у функціональну мову (Haskell або один з Lisps) з одного боку, а також асемблерний код та архітектуру систем (x86 або ARM) - з іншого.

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


6

Кожен з нас вирішує, над чим ми хочемо працювати над цим ...

  1. ви дізнаєтесь це, тому що хочете
  2. ви дізнаєтесь це, тому що вам це потрібно для роботи, яку ви хочете

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

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

Зрештою, це все про те, де ти хочеш бути.


У вашому описі це звучить занадто чорно-біло. "Технологічні бункери" та застарілі інженери з технічного обслуговування - це дві крайності ІМХО, і більшість із нас сидить десь посередині. Крім того, деякі "бункери технологій" занадто божевільні за останніми блискучими речами, щоб насправді навчитися будь-якій технології належним чином (що зайняло б більше часу, ніж те, що вони готові інвестувати в будь-який єдиний технік), тому вони ніколи не можуть виробляти міцні, довгострокові рішення до проблем.
Péter Török

1
@ PéterTörök: Відредагував мою відповідь. Я вказував на шкалу, але був лінивий, щоб все прописати. Ви маєте рацію, це суцільний спектр.
DXM

5

Найкращий мій аргумент, який я знаю, це те, що він розширює ваше уявлення про те, скільки різних способів можна вирішити, або висловити певну логіку. Добре знаючи Java та C ++, ви добре бачите обидві вітчизняні сфери та VM, однак є набагато більше "ступенів свободи" для вивчення.

Я маю близько 15 років досвіду роботи на C ++, 5 на Java. Є багато мов, які я вивчив і залишив позаду (PHP, Pascal, збірка для безлічі різних процесорів, серед інших), і я можу точно сказати, що навіть ті, які я більше не використовую, залишили вагомий слід у тому, як я думаю про проблему . Також: навіть якщо ви хочете дотримуватися, скажімо, Java, для даного проекту, вам доведеться знати альтернативу, щоб представити хороші контраргументи його прихильникам.

Тим не менш, я навчився Python лише цього року і був у захваті від того, наскільки елегантно можна зробити деякі речі. Настільки, що я вирішив перетворити декілька написаних REST сервлетів, з Java на Python. Переваги в технічному обслуговуванні коду були досить вагомими. Напевно, це залишило відбиток і на моєму способі виконання справ, не тільки тому, що я зараз виберу Python для деяких завдань, а й тому, що я можу прийняти подібні принципи дизайну при кодуванні на C ++ та Java.

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


5

Люди вивчають нові мови, щоб ...

  • розширити свої знання. Якщо ти знаєш більше, то почуваєш себе краще і ти впевненіше.
    Впевненість = Awesome Code!
  • мати більший набір інструментів. Скажімо, ви повинні зробити додаток. Якщо ви знаєте лише Java, ви збираєтеся робити програму на Java. Але якщо ви знаєте Java, Python, Scheme та Lisp, швидше за все, ви збираєтеся вибрати найкращий інструмент для роботи.
  • отримати роботу. Визнай це. Якщо ви знаєте більше мов, у вас є більше можливостей для роботи. Це досить зрозуміло.
  • стати кращим всебічним програмістом. Якщо ви знаєте синтаксис Perl, ви знаєте, що він може трохи звести з розуму. Коли ви пишете довгі програми на Perl, ви змушені дотримуватися кращих практик, інакше ви не будете щасливим відпочивачем. Оскільки ви знаєте найкращі практики Perl, це може допомогти вам написати кращий PHP-код (так чи інакше).

Отже, як бачите, є багато причин для вивчення нової мови. Моя рада вам (і моя єдина оригінальна цитата, яку я вважаю хорошою):

Пишіть код часто; Пишіть код добре; Написати код у Scheme, PHP, Java, Python, Lisp, Perl, C, C ++, C #, Visual Basic, Ruby ...


1
@Nupul: Або, принаймні, я думаю, що цитата йде так ...
Динамічний

5

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

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

http://blog.stackoverflow.com/2012/02/survey-results/


4

Альфред Норт Уайтхед написав чудовий твір під назвою " Важливість доброї нотації "

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

Мова програмування - це форма позначення. Я можу кодувати ОО в C; насправді саме так Stroustrup розпочався з C ++ - як серії макросів C прекомпілятора. Однак писати код OO на Java, C ++ або C # набагато простіше і швидше, оскільки в них є мовні примітиви, які легше підтримують ОО.

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


2

Більшість або всі відповіді вище стосуються професії. Програмування. Хочу нагадати, що перед тим, як ми програмісти - ми люди.

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

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

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

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

Нарешті, відповідь на ваше запитання може бути: взяти відпустку, приєднатися до заняття тхеквондо або подбати про сад - тоді ваше питання може вас більше не турбувати.


Хоча я міг би погодитися з вами, я додам, що, маючи всі ці хороші ідеї щодо програмування, роблячи інші види діяльності, я хотів би вивчити мову програмування, в якій ці ідеї реалізовані. Тож два аспекти ІМО (перерва у програмуванні та вивченні нових мов програмування) не виключають один одного.
Джорджіо

Це правда, що перерва у програмуванні та вивченні нових мов програмування не (не повинні) виключати один одного. Однак у дуже швидкому світі, в якому ми живемо, важливо пам’ятати, що відпочинок - може бути більш продуктивним, ніж рух. Це може бути перерва на каву - або навіть 1 рік перерви.
Шиан

-2

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

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


-3

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

І я з'ясував, що bc , довільна мова калькулятора точності, утиліта, майже доступна на кожній платформі Unix.

Я не думав про Python, Perl чи щось інше, але я виявив, що це вирішило мої проблеми швидко. Я перевірив це на фабриці (20000), яку запропонував один із знайомих, і це дало результати швидко, без жодних збоїв.

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

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

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


-8

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

В ідеальному світі є одна мова програмування низького рівня (наприклад, C), одна "безпечна" мова програмування високого рівня (наприклад, Java) та одна сценарій мови. Був би також великий кувалд для знищення "Вавілонської вежі мови програмування", створеної людьми, які не розуміють достоїнств стандартизації та вартості "збивання" та постійної перепідготовки для ІТ-галузі в цілому.

З «макроекономічного» сенсу, немає нічого поганого в тому, щоб вивчити нову мову програмування як хобі, але використання цієї нової мови програмування ні для чого не робить вас частиною проблеми.


4
Здається, це досить непрактичний ідеал. Хто вирішить ці стандартні мови, і як ви вирішите, що нову мову варто змінити? А що з ризиком застрягти в хитрій мові лише тому, що ніхто не бажає спробувати щось нове? Уявіть, якби ми це робили 10 років тому - кожен може використовувати C ++ та Java (а може, VB)!
Брендан Лонг

3
Ваше поняття "ідеального світу" звучить підозріло, як концепція дев'ятнадцяти вісімдесяти четвертої . У вашому нововведенні про революційні ідеї, такі як "функціональне програмування", "висновок типу" та "першокласний поліморфізм" та "мультиметоди", навіть не можна було думати, оскільки не було б можливості їх висловити. Правда, Оруелл, здається, не думав про вашу ідею кувалди, але якби він був, я впевнений, що знайшов би свій шлях.
ruakh

2
Крім вищезазначених пунктів, дуже мало вашої "відповіді" стосується власне питання. Downvote.
user16764

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

1
Обмеження цих мов не завадить жодній із згаданих вами проблем. Мені довелося переписувати додаток набагато більше разів через зміни фреймворків, ніж зміну мов.
Фабіо Чеконелло,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.