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


21

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


Ви питаєте, тому що процеси найму шукають ключові слова у резюме?
Брайан

@ 0A0D насправді ні, це було для особистого інтересу. Я також програміст :)
Digital Dude

Відповіді:


43

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

  1. Одна мова, щоб отримати першу роботу - швидше за все Java / C # / C ++
  2. Однією мовою для вирішення справ - швидше за все, Bash / Perl / Python / Ruby
  3. Одна мова, щоб згорнути свій розум - ймовірно, Haskell / Clojure / Scala / F #
  4. Одна мова з конкретних доменних причин - ймовірно, JavaScript / Ціль C
  5. Одна мова, щоб забруднити руки - швидше за все, C / збори

17
Якою мовою всі вони керують?
Тестер101

4
Асамблея правила їх усіх. Через що він перерахований останнім. Зберегли найкраще для останнього.
WernerCD

9
Tester101: Англійська? ; o)
Джон Фішер

6
Звичайно, не дивно, що мова, щоб отримати свою першу роботу, - це не мова, якою ви користуєтесь, щоб виконати справи.

4
... і в темряві зв’яжіть їх!
tchrist

53

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

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

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


23
+1 "Мова, яка не впливає на те, як ви думаєте про програмування, не варто знати" -Alan Perlis
Inaimathi

20
@Inaimathi: Якщо не знати, це допомагає сплатити рахунки.
Відновити Крамію Моніку

5
Лише зауваження: я запропонував Haskell з будь-якої причини, крім того, що він кардинально відрізняється від C #. Асбестовий підманщик в мені хотів сказати "навчись малого розмови, щоб ти міг навчитися ОО"!
Френк Ширар

10
@Digital Dude: те, що важко, є певним моментом. Цей біль за лобом НЕ поганий - це знак того, що ваш мозок росте. Якщо ви просто хочете продовжувати вчитися одній і тій же речі знову і знову, вивчіть Java, потім C #, потім Ruby, потім C ++ (woooh, немає сміттєзбірника - страшно!), Потім C (ніяких класів - страшно-страшно!), То можливо зійти справді з розуму і спробувати Objective-C! (Ooooh - два дні тому я не міг написати Mac і тепер я можу запрограмувати його!) Моя думка - якщо ви хочете навчитися чогось НОВОГО, вам потрібно зробити щось РІЗНО. Слідом за тією ж дорогою просто ви потрапите до того самого місця.
Боб Джарвіс - Відновіть Моніку

4
@Kramii @Inaimathi Ага, але мова, яка допомагає вам сплачувати рахунки, впливає на те, як ви думаєте про програмування
slf

22

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

1) Python та Perl для категорії мов сценаріїв

2) C ++ як "рамкова" мова

3) Java для мобільних додатків

4) C для величезної кількості застарілого коду

5) Деякі застарілі мови, які я знав, коли я був молодий (Basic, Pascal, Clipper тощо)

Я б сказав, що вам потрібна хоча б основна мова та сценарій. Знаючи C #, я б сказав, що вам потрібно вивчити Python або Perl або Ruby далі. (Я б пішов з Python, але це лише питання переваги).


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

2
карма для здатності швидко вчитися
Аюш Гоял

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

знання C # відрізняється, ніж бути знавцем цієї мови
Брайан

1
Паскаль навряд чи застаріла мова; сьогодні в Дельфах розробляється багато матеріалів.
Мейсон Уілер

8

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


Спасибі! Я знаю трохи тут і там, але зрозумів, що не можу реально опанувати одну мову повністю. Завжди відбуваються нові речі ..: /
Digital Dude

2
@Digital Вам не потрібно опановувати кожну мову. Ви повинні бути знайомі з поняттями, так що якщо виникає проблема, яка найкраще допоможе мові, ви можете прийняти це рішення. Це також може викрити вас поняттями, які ви можете використовувати на своїх основних мовах.
KeithB

8

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


7

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

перейдіть до принципів такого типу програмування, основ (наприклад, інкапсуляція для ООП; що це означає і що це передбачає) та вивчіть деякі принципи

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

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

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

останні два не в основному, а в деякій мірі


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

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


6

Стільки, скільки потрібно, щоб виконати свою роботу.

Але C # і Java такі ж близькі, як англійська Великобританія та англійська США. Ви можете дізнатися щось нове , поїхавши на фінську або навахо.


1
або! Xóõ: en.wikipedia.org/wiki/Taa_language (африканська мова "клік").
Jared Updike

хе-хе, після згадки про фінське чи навахо. Я думаю, що замість цього я піду на японську мову четверту ... достатньо програмування ...
Digital Dude

1
@Jared, я думаю, що мова, ЯКА ПОТРІБНА "вирізати та вставляти" просто щоб сказати своє ім'я, може спонукати небажані звички з самого початку ...

5

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

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

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


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

3

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

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

Я грав з Smalltalk, і мені це сподобалось. Мова була просто приємною для розвитку. Як тільки ви звикли до ідіом, вони допомогли вам бути більш виразними зі своїм кодом. Я взагалі не пропустив статичне введення тексту в Java / C ++ / C #. Генеріки, з якими ми живемо на наших статично типових мовах, справді побудовані для вирішення обмежень, які накладає статичний набір тексту.

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

Врешті-решт Java піде шляхом Lisp та Smalltalk, а C # піде за відповідним прикладом. Що там буде, щоб зайняти їх місце, залишається побачити. Зрештою, якщо ви знаєте, як вирішити проблеми, і у вас є кілька способів розрізати та порізати проблему, ви зможете знайти роботу та підібрати будь-яку мову, яка вам потрібна.


2

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

Тож, вивчаючи більше .net-фреймворку під час використання C # або Java-систем, це допомагає зберігати кінцівки, навчання Haskell, Smalltalk, Scala, Clojure або Ruby розширить вашу техніку та допоможе вам думати по-різному, деякі з яких ви можете корисно використати повернутися до вашої основної мови, і деякі з яких можуть допомогти вам рухатися далі, якщо Java перестане бути королем пагорба.

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

Я рекомендую прочитати книгу Брюса Тейта «Поза Явою», яка занадто добре висвітлює небезпеку існування лише на одній мові, зазначивши зростання та падіння C ++. Незважаючи на те, що C ++ ще далеко не помер, і вже минуло десятиліття, його стає все більше і більше використовувати лише у ситуаціях, які не можуть скористатися підвищенням продуктивності на інших мовах. На відміну від цього, Сінатра, рубінова рамка, дозволяє побудувати просту веб-службу приблизно в 6/7 рядків коду, еквівалент C ++ може бути на порядок більше, ніж цей.


1

Коли ви не є носієм англійської мови, принаймні ви повинні зосередитися на вдосконаленні своєї англійської мови . Я це кажу на основі свого досвіду. Розуміння цієї мови мені дуже допомогло.

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


1

Мови - це інструменти для роботи. Деякі мови корисні для деяких типів проблем, інші, як правило, хороші у всіх видах вирішення проблем. Я рекомендую вивчати нові мови, коли вони з'являться. Не захоплюйтесь тим, що модно в цьому місяці, але дізнайтеся, що вони можуть робити, у чому вони хороші. Моя порада - 1 нова мова на рік. Вони виходять швидше за це, але ви прагнете помістити нові інструменти у свій інструментарій, а не бути модною новою дитиною на блоці.

Одне есе, яке розповідає про різницю між мовами, - це "Побиття середніх" Пола Грема. Я рекомендую прочитати його, але тут важлива частина (він використовує "Blub" як гіпотетичну мову, щоб ви не сперечалися про те, що вміє ваш улюблений багаж):

Або як щодо Perl 4? Між Perl 4 та Perl 5 до мови додалися лексичні закінчення. Більшість хакерів Perl погодиться з тим, що Perl 5 є більш потужним, ніж Perl 4. Але, як тільки ви визнали це, ви визнали, що одна мова високого рівня може бути потужнішою, ніж інша. Звідси випливає, що, за винятком особливих випадків, ви повинні використовувати найпотужніші, що ви можете отримати.

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

{snip}

Поки наш гіпотетичний програміст Blub дивиться на континуум живлення, він знає, що дивиться вниз. Мови менш потужні, ніж Blub, очевидно, менш потужні, тому що їм не вистачає певної функції, до якої він звик. Але коли наш гіпотетичний програміст Blub дивиться в інший бік, вгору по енергетичному континууму, він не розуміє, що шукає. Те, що він бачить, - просто дивні мови. Він, ймовірно, вважає їх за еквівалентні Блубу по силі, але з усіма цими іншими волохатими речами також кинуті. Блуб для нього досить хороший, тому що він думає в Блубі.

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

За індукцією, єдиними програмістами, які зможуть побачити всі відмінності у силі між різними мовами, є ті, хто розуміє найпотужнішу. (Це, мабуть, мав на увазі Ерік Реймонд про те, що Лісп зробив вас кращим програмістом.) Ви не можете довіряти думкам інших людей через парадокс Блуба: вони задоволені якою мовою вони користуються, бо це диктує як вони думають про програми.

http://www.paulgraham.com/avg.html

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


0

Перш за все, існує декілька мов, яких важко уникнути для більшості програмістів: javascript, sql, c тощо.

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

на краще чи на гірше, ви, швидше за все, також наткнетесь на c # та / або java, вони досить поширені.

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


0

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

Якщо ви хочете запропонувати мови для вивчення тут, є декілька ідей:

  1. Функціональне програмування - тут є приклади Haskell або Lisp, і зміна парадигми може бути певною мірою поворотом голови.

  2. Специфічна база даних - PL / SQL або T-SQL приходять до уваги як щось, що може бути корисним, якщо ви хочете виконати більше бек-енд-систем із системами, для яких потрібна база даних для певного функціоналу.

  3. Мови веб-інтерфейсу - ActionScript або Javascript можуть бути прикладами тут мов, які використовуються у програмах Rich Internet, хоча AIR може змусити деякі настільні додатки використовувати веб-дзвінки в деяких випадках, як Twhirl, використовуючи API Twitter.

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


0

Програміст повинен знати три мови: C, англійська та Something Else.

C дуже важлива мова, вона близька до машини і має правила синтаксису, спільні для декількох мов високого рівня. C змушує вас думати про такі речі, як структура даних зовсім іншим чином, ніж Java. Крім того, vms Python та Ruby вбудовані в C, і ви можете вбудувати C на обидві мови, коли хочете підвищити свою швидкість.

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

Щось інше повинно бути мовою, яка не є процедурною, або не є статично набраною, або сильно об'єктно орієнтована, або якимось чином принципово відрізняється від C. Haskell, Scala, Python, Ruby, деякий діалект Ліспа, як би там не було .

Після цього ви зможете дізнатися, до чого вимагає конкретна ситуація, ймовірно, C # або Java.


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

англійська мова не навчає вас ідеї, це лише спосіб висловити ідею.
sagarmatha

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

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