Чи варто вивчати експериментальні мови? [зачинено]


25

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

C і C ++ приємні, але вони старі. Такі речі, як Haskell і Forth (etc. etc. etc. etc.), старі і втратили свою популярність. Мені страшно вивчати C (або навіть C ++) з цієї ж причини. Java також досить стара і повільна, тому що вона працює за допомогою JVM, а не компілюється в початковий код.

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

  • Його найчастіше використовують для веб-додатків та додатків для мобільних телефонів (зокрема для Android)
  • Що стосується реальних продуктів, виготовлених із нею, то єдині речі, які спадають на думку, - це Netbeans, Eclipse (ура для створення та IDE мовою, для якої IDE - це як створення веб-сторінки для написання HTML / CSS / Javascript) та Minecraft що буває веселим, але млявим і двополюсним, наскільки комп'ютерні характеристики. підтримка.
  • Крім того, що він використовується для серверів, але чортів - я не хочу робити / налаштовувати сервери .

Мови .NET приємні, однак:

  • Люди сміються, якщо я навіть у серйозній розмові навіть згадую VB.NET або C #.
  • Це не крос-платформа, якщо ви не використовуєте MONO (який все ще знаходиться в розробці і має бути вдосконалений трохи).
  • Не вистачає матеріалів низького рівня, оскільки, як і Java з JVM, вона управляється / керується CLR.

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


Що я вдивився

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

D також добре виглядає. Схожедуже зручний мову і зкратipleджерел,видаєтьсясамом деле кращеніж C / C ++. Я б стрибнув прямо з цим, але я все ще не впевнений у його успіху, оскільки це, очевидно, не дуже мейнстрім.

Є ще декілька інших, які виглядали досить приємно, зосередившись на інших речах, таких як Opa з веб-розробкою та Go by GOOGLE.


Моє запитання

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


Відмова від відповідальності

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


Результати...

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

Спасибі


10
"вивчіть усі п'ять Python, C / C ++, Java, Perl та LISP" (Ерік Реймонд, Як стати хакером -> Основні навички хакерства -> 1. Навчіться програмувати. )
gnat

7
Зауважте, що просто "старий" не означає автоматично "поганий" за замовчуванням. Деякі з найфантастичніших програмувань поки що були зроблені на C64 30 років тому.

8
FWIW майже використовує будь-яку мову - якщо хтось сміється над тобою за використання майже будь-якої мови (Java повільна,. Net для M $ суки, Haskell непрактично, C ++ занадто старий тощо) правильний інструмент для роботи;)
Мартін

6
Звідки ви взяли "Haskell і ... втратили свою популярність"?
близько

13
Для молодого програміста у вас занадто багато припущень. Позбудьте їх, вони затуманили ваш розум.
Матьє М.

Відповіді:


29

Справа в тому, що вивчати різно різні мови не в тому, щоб вивчити мови, а в тому, щоб виявити різні підходи до проблем. Інструменти для панелі інструментів як би.

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

Крім того, Java та .Net не інтерпретуються, і я очікую, що ви робите некоректні припущення на основі цього неправильного маркування.


Вуп, вибачте за інтерпретовану проблему. Я змішував там два різних оксиморонні твердження. Я це зафіксував у самому питанні.
Freesnöw

19
Ну, Haskell є старше , ніж, наприклад, Java, хоча. Але так, це не означає, що він застарів. Насправді, система типу ще на два десятиліття випереджає Java.
Йорг W Міттаг

5
@ JörgWMittag: Я думаю, що це говорить більше про Яву, ніж про Haskell.
Тихон Єлвіс

1
Я програмую лише на Haskell та Java ... але, якщо чесно, жодна мова мови не має системи типів, яка є настільки ж хорошою, як Haskell. (І я мушу сказати, OP ..._ багато більше матеріалів, ніж те, що ви згадуєте, працює на Яві.)
Луї Васерман

1
На сьогодні Haskell старше 20 років, а стандартний Haskell такий же старший, як і стандартний C ++ (вони обидва з 1998 року).
fredoverflow

23

Будьте готові: регулярно займайтесь практикою

Практика робить ідеальною.

Чим більше коду ви пишете І читаєте , тим ближче ви доходите до просвітлення / майстерності як програміста / розробника / інженера-програмного забезпечення / гуру / ніндзя / майстра / хакера / голосового вибору. Шляхом кодування та читання більше, а також спроб наших нових способів написання коду, тим більше відкритих ви (сподіваємось) залишаєтесь.

Рекомендоване читання:

Дізнатися про нові парадигми та мовні особливості

Можливо, ви не зможете перекласти те, що ви використовуєте в абсолютно новому Super-Language-X, на ваш Enterprise-Language-Y, але, можливо, ви зможете розпізнати, коли це могло б бути гарним пристосуванням. Можливо, ви зможете знати, коли інтегрувати іншу технологію або стек у свій проект, щоб відповідати певній меті. Або, можливо, ви знаєте, як використовувати функції мови Y, щоб імітувати прикольну особливість мови X, і перефактуруйте свій код, щоб отримати з нього користь (і, можливо, просвітите інших колег по дорозі).

Наприклад, ви могли виявити цікаві принципи FP і хотіли б адаптувати їх до Java, що, напевно, не FP за задумом .

Рекомендоване читання:

Будьте джеком всіх торгів ... Майстер деяких?

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

Звичайно, ви не можете стати господарем усіх торгів. Але ти міг би бути майстром одного, і в гарному відношенні добре. Ти вчиш ремесло, а наше багатогранне. Робити регулярні вправи, відвідувати семінари, захоплювати книгу, писати новий проект для домашніх тварин та інші подібні речі - це наш спосіб не відставати від постійно зростаючих темпів змін у нашій галузі.

Рекомендоване читання:

Будьте пристосовані

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

Це як пісня «Залишайся молодою» пісні Oasis: Залишайся молодою і непереможною .

Якщо ти можеш адаптуватися, ти можеш вижити.

Рекомендоване читання:

Будьте видимими: розумійте радіолокацію агентства з підбору персоналу

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

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


Інші корисні теми SE


Якщо ви збираєтесь прочитати " Побиття середнього" Пола Грема (або що-небудь ще він пише на тему програмування, з цього приводу), візьміть його із зерном солі. Багато речей, які він повинен сказати про практику програмування, - це 50% правильно, а 50% - небезпечно неправильно.
Мейсон Уілер

@MasonWheeler: Це суперечливо, як і багато речей, які ви можете дізнатися там у відомих галузевих "гігантів", відомих себе чи ні. Багато людей не схвалюють писання Зеда Шоу, як і інші з Норвіга. До всього слід підходити з критичним розумом: я сприймаю це як даність ні для чого, і припускаю (сподіваюсь), що і люди на цьому рівні. Дуже багато письменників презентують теми у світлі конкретної ситуації, що не відповідає всім. Насправді, ви щодня бачите це і у відповідях, але "популярною" силою вони будуть вважатися "найкращими" відповідями. Все-таки це інформаційно.
haylem

8

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

  • вчитися вчитися (практика вивчення нових навичок)
  • навчити свій мозок мислити по-новому
  • можливо, отримання менш популярних (або навіть езотеричних) знань, які мало хто може і може стати в нагоді
    • або принаймні вразити їх своїми технічними знаннями :)
  • і звичайно, це забезпечує цінну технічну інформацію. Чому C # популярніший за D? Чи може C ++ зробити все, що може зробити D? Чи може D зробити більше, чи це більше схоже на синтаксичний цукор?

http://skilldrick.co.uk/2011/02/why-you-should-learn-brainfuck-or-learn-you-a-brainfuck-for-great-good/

Ще одна вагома причина вивчити brainf * ck - зрозуміти, наскільки базовою може бути мова програмування, повною для Тьюрінга. Поширений аргумент, коли програмісти порівнюють мови, це "добре, що вони є цілістю Тьюрінга", це означає, що все, що ви можете зробити на одній мові, ви можете зробити на іншій. Після того, як ви дізнаєтеся brainf * ck, ви зрозумієте, наскільки складно використовувати мову, повну Тьюрінга, і як цей аргумент не має ніякої ваги.

http://norvig.com/21-days.html (Пітер Норвіг)

Вивчіть принаймні півдесятка мов програмування. Включіть одну мову, яка підтримує абстракції класів (наприклад, Java або C ++), та, яка підтримує функціональну абстракцію (наприклад, Lisp чи ML), та, яка підтримує синтаксичну абстракцію (наприклад, Lisp), та, яка підтримує декларативні специфікації (наприклад, шаблони Prolog або C ++), одну яка підтримує супроводи (наприклад, Icon або Scheme) та підтримує паралелізм (наприклад, Sisal).


7

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

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

Що стосується популярності, а, C ++ буде відчувати трохи відродження в останній час . Люди помітили , що на насправді, продуктивність робить справу, багато, і ви не можете піти з роботи кожен компонент як керований однією і сучасний C ++ (особливо з C ++ 11) немає абсолютно нічого , як Зі сміттям вони думали , що це було , і це зовсім не так погано. Це насправді не старіє. Це стає все новішим. Новий Стандарт - це широке оновлення, і немає підходящих мов заміни, чи то поточних, так і в розробці, для багатьох областей C ++ використовується зараз. Це не в останню чергу тому, що не існує мов з гідною взаємодією на C ++ (навіть сам C ++), що ускладнює міграцію подалі від існуючих баз кодів C ++.

Люди сміються, якщо я навіть у серйозній розмові навіть згадую VB.NET або C #.

Знайдіть нових людей. AFAIK, VB.NET насправді не існує з будь-якої причини, за винятком того, щоб допомогти мігрувати подалі від VB6 і насправді не є гідною ціллю на власні права, але C # - це справжня мова. Це якось схоже на Java, за винятком того, що вони потім додали фактичні мовні функції та деякі приємні бібліотеки. C # є дуже популярним, добре підтримуваним мовою з дуже хорошими інструментами в VS, що не смокчуть , що погано, і є твердим, якщо не єдиним, що потрібно вчитися.

Це не крос-платформа, якщо ви не використовуєте MONO (який все ще знаходиться в розробці і має бути вдосконалений трохи).

MONO досить стабільний. Плюс, в кінцевому рахунку, 90% споживачів настільних ПК (чи це 80%?) Працюють зараз Windows. Якщо ви збираєтеся розробити додаток для настільних ПК, це відкрите питання про те, чи варто для користувачів, які не є Windows, часу, щоб підтримати, навіть якщо ви користуєтесь мовою крос-плат.

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

Просто не вибирайте PHP. Єдине, чого ви можете навчитися з цього, - це як не побудувати мову.


1
Значний відсоток останніх доповнень до стандарту C ++ існує лише - як і значний відсоток доповнень у минулі часи - для виправлення існуючих вад C ++. Наприклад, посилання Rvalue додає купу додаткової складності, щоб вирішити купу проблем із продуктивністю та складністю, пов’язаних з конструкторами копіювання, які існують лише тому, що C ++ дозволяє використовувати об'єкти як типи значень, що на 100% абсолютно неправильно, і є вагома причина, чому жодна інша мова ОО не робить цього.
Мейсон Уілер

@MasonWheeler Принаймні C #, D та Ейфелева дозволяють об’єкти як типи значень. І RAII настільки приємний для системного програмування!
fredoverflow

@MasonWheeler: Довідники Rvalue також дозволяють ідеально пересилати та пересуватись лише типом. Продуктивність була лише однією з трьох головних причин їх впровадження. Об'єкти з типовим типом просто чудові. Плюс, звичайно, ви можете писати власні об'єкти типу довідки в C ++ все, що вам подобається.
DeadMG

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

1
@FredOverflow: У C # всі об'єкти є еталонними типами. Структури можуть бути типовими значеннями, але об’єкти не можуть, і це з дуже вагомої причини: якщо об’єкти звикають як типи значень, ви кидаєте величезний мавповий ключ у спадщину та поліморфізм і в кінцевому підсумку доводиться використовувати всілякі некрасиві хаки як конструктори копій, де присвоєння (або передача) нащадкового об'єкта батьківській змінній типу насправді не присвоює цьому об'єкту. Це повністю викручує заміну Ліскова, що в першу чергу полягає в застосуванні OOP. Це жахлива ідея, і я радий, що вона ніколи не прижилася.
Мейсон Уілер

6

Пара коментує те, що ви сказали ...

1) Кожен програміст повинен вивчити C, навіть якщо він старий. Це чудова мова для наближення до машини. З порад Джоела для студентів CS ...

Вивчіть C до закінчення навчання

Частина друга: C. Зауважте, я не сказав C ++. Хоча C стає все більш рідкісним, це все-таки lingua franca працюючих програмістів. Це мова, якою вони користуються для спілкування один з одним, і, що ще важливіше, це набагато ближче до машини, ніж "сучасні" мови, яких ви навчатимуть у коледжі, як ML, Java, Python, незалежно від того, в яких модних мотлохах вони навчатимуться. днів. Вам потрібно провести принаймні семестр, наблизившись до машини, інакше ви ніколи не зможете створити ефективний код на мовах вищого рівня. Ви ніколи не зможете працювати над компіляторами та операційними системами, які є одними з найкращих завдань програмування. Вам ніколи не будуть довіряти створення архітектур для великих масштабних проектів. Мені все одно, скільки ви знаєте про продовження та закриття та поводження з винятками: якщо ви не можете пояснити, чому доки (* s ++ = * t ++); копіює рядок, або якщо це для вас не найприродніша річ у світі, ви програмуєте на основі забобонів, що стосується мене: лікар, який не знає основної анатомії, передаючи виписати рецепти, виходячи з того, що сказала немовля з продажу аптеки.

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

Вітаю, мені здається, що ви, можливо, їдете в одну з небагатьох шкіл, що залишилися, яка насправді намагається викладати інформатику. Схема навчання як першої мови (ІМО) - дуже хороша річ. Ні, це не так комерційно, як багато інших, але це чудова мова для вивчення справжньої суті інформатики. - Джеррі Труну 20 жовтня 11 о 3:32

C, C ++ і Java - галузеві побічні продукти інформатики. Цілі корені схеми - в інформатиці. Мови в комерційному використанні мають стільки ж спільного з інформатикою, скільки Макдональдс і з кухнею. - JasonTrue 20 жовтня 11 о 5:30

Ці хлопці вірні; ви плутаєте комп’ютерне програмування з інформатикою - як сказав Дайкстра, це як плутати конструкцію телескопа з астрономією. Схема про найкращу мову для вивчення основних понять з інформатики. Якщо ви очікуєте, що ступінь інформатики - це те, як навчитися писати додатки для бізнесу на Java, можливо, ви будете записані в неправильній програмі. - Ерік Ліпперт 20 жовтня 11 о 7:40

Майже всі розробники, яких я знаю, самі вивчили C / C ++. Вам для цього не потрібен університет. - mouviciel 20 жовтня 11 о 7:48

З тієї ж причини, що курси зоології вчать еволюційну біологію, анатомію та поведінку тварин, а не як вискубувати слона, - слов. 20 жовтня 11 о 7:58

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


1
"Майже всі розробники, яких я знаю, засвоїли C / C ++ самостійно. Для цього вам не потрібен університет.": Те саме тут. У моєму університеті вони дали нам завдання з C, але не дали курсу C. Вони просто очікували, що ми, студенти з комп’ютерних наук, підемо отримати книгу та вивчити її.
Джорджіо

1
Навчитись С - це цілком катування. Мої симпатії.
DeadMG

2
Насправді вивчення C було легкою частиною, справжні тортури почалися, коли нам довелося перейти на C ++. ;-)
Джорджіо

3

БУДЬ-яка мова, яку ви вивчаєте, зміниться протягом наступних 5 років. Йдеться не про те, щоб вивчити мову, яку, на вашу думку, може знадобитися певний час, а навпаки, як навчитись ЯК вчитися. Чим більше впливати на вивчення мови та процес вивчення цієї мови допоможе вам надзвичайно довго!

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

Я вивчив японську мову після того, як я вивчив C ++, BASIC, Pascal, і можу сказати, що вивчення комп’ютерної мови та іноземної мови вимагають однакових навичок. Ці навички можна втратити або посилити. Якщо у вас є драйв, продовжуйте це та вивчайте нові мови!

(ps. як для вивчення FORTRAN або складання, я вважаю, що цілком важливо принаймні взяти один семестр старих мов. Це змушує задуматися про речі, які ви просто сприймете як належне на нових мовах, такі речі, як прапори, розподіл пам'яті тощо) .)


3

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


+1: Я повністю згоден. Багато цікавих ідей я отримав під час експерименту з менш основними мовами, такими як Haskell, Schema, Scala, SML тощо.
Giorgio

2

Я погоджуюся з вами щодо експозиційної частини речей. Хоча я знаю Java, C, C ++, Javascript, Python, Ruby і трохи .NET (насамперед тому, що я ненавиджу що-небудь M $ <- особиста думка), я мушу сказати, що я дуже люблю програмування в D.

D має дуже гарний набір функцій (більшість із них реалізовані на C ++ / Java (мови, які мають абстракції класів) тощо), але одне, що я найбільше люблю, - це дженерики та делегати (полегшує реалізацію зворотних дзвінків). Окрім цього, ви отримаєте набагато простіший синтаксис для вирішення порівняно з C ++. D має дійсно ефективний збір сміття, хоча ви можете самостійно обробляти пам'ять (особливо при взаємодії з модулями C / C ++). Хоча D не має набір модулів, що надаються користувачем, які не повинні бути бар'єром для входу. Ви можете легко взаємодіяти з існуючими C / C ++ бібліотеками (які є приємними), тим самим роблячи її зайвою для потреби в модулях.

D має власну стандартну бібліотеку (Phobos), яка обслуговує потребу у всіх поширених проблемах програмування. Існує також альтернативна бібліотека ( Tango-D2 ), яку ви можете використовувати або з Phobos, або самостійно. Якщо ви веб-розробник і маєте потребу в написанні сервера на основі подій, Tango має гарну абстракцію селектора (tango.io.Selector for select select (), poll (), epoll ()). Я виявив, що він працює навіть краще, ніж libev.


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

1
Домовились. Я подумав, що питання щодо ОП було зосереджене на тому, щоб "експериментальне" було тим, що ще не є стабільним / підтримує корпоративну підтримку / те, що не є основним. І навіть якщо ви хочете на "експериментальну" реалізацію різних парадигм, я гадаю, там є лише кілька парадигм. І більшість мов реалізують ту чи іншу. Тоді ми переходимо до того, якою мовою краще / швидше / простіше користуватися / найкраще для роботи. Ці фактори відрізняються від програміста до програміста.
Шріпад Кришна

1

Мови розроблені для вирішення проблем у якійсь галузі (принаймні спочатку). Якщо ви не стикалися з проблемами, які ваші інструменти не можуть вирішити таким чином, як вам зручно, ви забите дерев’яну дошку, сподіваючись стати столяром. Спробуйте зрозуміти, які проблеми намагаються вирішити мови. Єдина відмінність "експериментальної" мови від нової / хіп-класної мови - це гроші, що підтримують її, наприклад, переходьте від google та Dart. Якщо їх розробили на моєму дворі, вони, напевно, помруть на якомусь форумі, і це все. Вони виживають лише в тому випадку, якщо вміють пояснювати проблеми, які намагаються вирішити. Або навпаки, як Perl та C ++, які добре вживають способи вирішення проблем, щоб продовжувати жити. І я можу запропонувати вивчити Луа, це ' З мовою, створеною для вбудовування в програми, вона дуже швидка і легка, що дасть вам інструменти для вирішення великих або малих проблем, які деякі мови, як-от Java, не можуть вирішити просто. Беручи приклад з японської мови, якщо ви просто вивчите синтаксис, граматику та алфавіти, ігноруючи культуру, ви ніколи не зрозумієте, чому це так складно, і врешті все забудете про це. Це нічого не вирішує для вас.


1

Вивчення декількох різних мов дасть вам ширший погляд на програмування. Акцент на "різних" - наприклад, вивчення C # та Java не навчить вас багато чого, ніж вивчення лише одного з них. Але вивчення C # або Java та функціональна мова (наприклад) будуть.

Сказавши, що, будучи молодим програмістом, я думаю, що ви отримаєте набагато більше цінності, якщо ви по-справжньому пізнаєте одну мову, перш ніж підстрибувати, дивлячись на різні типи мови. З вашого питання не зовсім зрозуміло, наскільки добре ви знаєте Java, VB.NET і C #. Чи впевнені ви, що якщо ви напали на проект, використовуючи одну з перерахованих вище мов, вашим вузьким місцем буде саме проект, а не ваше знання мови? Якби ви витратили більше часу на запитання себе: "як мені це зробити мовою ?" ніж ви б витратили на роздуми над актуальною проблемою, то, ймовірно, вам потрібно більше зосередитися на одній із ваших сучасних мов.

І особисто я думаю, що ви повинні скористатися прагматичним підходом до вирішення того, що це таке. Java використовується для програм Android? Чудово, якщо ви робите додатки для Android те, що вас цікавить. Неважливо, якщо це не так. C # не чудово підходить для розробки, не для Windows? Погані новини, якщо вам цікаво розробити для Linux. Безрелевантно, якщо ти цього не робиш. І так далі.

А "експериментальні" мови, які ви згадали? Практично, якщо вони працюватимуть з іншими людьми, вони будуть погано підходити - ви, мабуть, знайдете тисячу людей, які знають C # або Java для кожного, хто знає Fantom. Для особистих проектів це не обов'язково є проблемою. Якщо ваша мета - підвищити працевлаштування, це так.


1

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

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

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

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

Я особисто рекомендую зайти в Go. Я використовував це для написання односторінкових програм, які працюють краще, ніж три дні та 13 сторонніх бібліотек на C або C ++, і навіть не було б можливо в Python, C #, Ruby тощо. Це було розроблено людьми, які справді, справді, справді знають свої речі.


-1

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

Бідний D, це гарна мова, але йому не вистачає програми-вбивці, якої мав C ++: майже повна сумісність назад із мовою №1 того часу (C для випадку C ++). Це приємно, але той важливий маленький факт, ймовірно, призведе до того, що D буде побічно показувати в книгах історії.


-2

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

Java не повільний, той, хто сказав вам, що не знає, про що він говорить, Java навчить вас багато про OOP

Чому б ти просто не почати з Python, а потім піти на C або щось інше,


C - це також lingua franca мікроконтролерів (коли у вас є лише 4K, ви не можете дозволити виконання 8K). Тільки в цьому просторі C попереду - ще одне добре десятиліття активного використання.
TMN

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