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


21

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

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


2
Я не думаю, що на це питання немає жодної об'єктивної (або навіть суб'єктивної) відповіді. Чим більше ви фахівець, тим краще для вас - чим ширша у вас перспектива. Ви мали на увазі "Скільки парадигм мови програмування в ідеалі повинен бути експертом?"
talonx

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

1
Як ви думаєте мовою, якщо вам доведеться шукати більшість своїх слів у словнику, щоб знати, що вони означають?
blueberryfields

1
@blueberryfields: Вільне володіння мовою - це набагато більше, ніж просто словниковий запас, і за межами основ, лексика - це її незначна частина. Нічого не знаючи, що функція існує, якщо ви не можете зробити щось розумне з цими знаннями. Набагато простіше просто знайти функцію, ніж зрозуміти, як зробити щось розумне з нею. Я б сказав, що знаючи документи досить добре, щоб швидко знати, де шукати задану функцію, якщо вона існує, достатньо знань про бібліотеку. Після цього ви точно запам’ятаєте ті, якими ви користуєтесь, і невиразно пам’ятаєте ті, яких не використовуєте.
aaronasterling

2
@blueberryfields: Залежно від мови / платформи , трохи знань може бути небезпечною справою . Що я маю на увазі: якщо людина стверджує, що знає багато функцій бібліотеки напам'ять і не потребує читати документацію, я би сподівався, що ця людина також знає всі повернені значення, умови виключення та підводні камені / застереження, à la Raymond Chen напам'ять і вміти писати книгу та читати лекції для Microsoft / Google тощо. Незважаючи на це, людина в результаті робить багато смішних помилок.
rwong

Відповіді:


33

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

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

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

Більш пряма відповідь - "це залежить".

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

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


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

3
+1 усім, хто сказав Інаіматі. Подумайте про мову програмування як інструмент. Так, нам потрібно дуже добре знати наш інструмент, але коли ви лише знаєте, як користуватися молотком, то все може виглядати як цвях
Liviu T.

14

У вас дуже цікаве запитання:

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

"Хороший" програміст, наскільки я маю на увазі, що розробляє проекти розвитку, не лякаючись за класичне "Я ніколи раніше не працював з цим", повинен вивчити мову менше ніж за 5 робочих днів. Ви вивчаєте кращі практики, інструменти та бібліотеки в основному з двох способів, 1: читання та 2: робота. Або підстрибуєш головою проти коду, або читаєш купу книжок.

Через кілька років після того, як «хороші програмісти пишуть просто код» немає коду C # або коду C ++ або Java-коду, ви зрозумієте, що після того, як ви навчитесь розробляти програми, мова та технологія не є такими важливими. Звичайно, ви знатимете, як пересуватися на C # краще, ніж PHP, але якщо ви добре навчились, то вам доведеться пройти через Python, якщо доведеться.

Сподіваюся, мої ідеї, як ви!


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

Думаєш, і ти це правильно зрозумів: 11 років і рахуєш ... :)
Девід Конде

3

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


3

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

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




1

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


1

Ні, оскільки, ймовірно, є деякі програмісти, які не будуть фахівцями з будь-якої мови, але їм подобається різноманітне середовище, яке вони мають, і використовуватимуть різні мови залежно від обставин, оскільки деякі можуть знати декілька технологій на стороні сервера, таких як PHP, ASP.Net в C # .Net або VB.Net, або Java, кілька мов скриптування на стороні клієнта, таких як JavaScript або Flash, і це не вникає в жодне обладнання, яке використовується для розміщення веб-матеріалів тут.

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


1

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


1

Це гарне запитання, але я не думаю, що існує стандарт. Зазвичай, як я бачив, люди є повноцінними експертами в одній мові високого рівня (C ++, Java тощо) в одному середовищі (windows / linux, mac, solaris). Вони приблизно знають іншу мову високого рівня, але не повністю її розуміють. (наприклад, C ++, люди Java знають один одного приблизно). Приблизно я маю на увазі, що вони можуть порівнювати виконання одного завдання мовою, якою вони знають, та іншою мовою. І тоді вони помірковані деякою мовою сценарію. (наприклад, Linux знає bash, Windows знає VBA, веб-люди знають PHP).
Для мене важливим є основне знання алгоритму, ніж мова. Якщо ваші основи хороші, менше шансів зіпсувати будь-яку мову.
Але так, іноді може бути корисним знати, яка мова може бути кращою для того, яке завдання. наприклад, наступний код набагато швидший у паскалі, ніж у С.

strcat (A, "Привіт"); strcat (A, "WOrld"); strcat (A, "кажу привіт!");

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


0

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

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