Чи розумно переходити між двома мовами програмування? [зачинено]


28

Я майже два роки пишу PHP. Зараз я займаюся розробкою .NET (переважно c #). Однак іноді я повертаюся назад і роблю якусь php.

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


30
краще бути джеком у всіх торгах, ніж один трюк поні
scrwtp

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

4
Ви задаєте це запитання так, як ніби ви абсолютно вільні вибирати між C # та PHP - це справді так?
Док Браун

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

2
Всього два? Багато програмістів регулярно працюють декількома мовами. Знання кількох дає вам більший набір інструментів, з яких можна зробити.
Калеб

Відповіді:


75

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

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

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


4
Я не впевнений, як хто-небудь взагалі може бути ефективним програмістом, не використовуючи принаймні 3 мови на регулярній основі.
Брайан Ноблеуч

1
@Brian - ці три мови, які є вашою основною розмовною / письмовою мовою, вашою основною мовою програмування та SQL та / або HTML?
KeithS

2
@KeithS Тільки якщо ви створюєте надто прості сторінки на стороні клієнта і ніколи не торкайтесь записів XML на стороні сервера. CSS та Javascript вважаються своїми мовами, як і XPath, XSLT і XQuery.
Tacroy

2
Все, що містить "Більшість людей" або "Більшість розробників", слід дотримуватися цитування. В іншому випадку вона суб’єктивна. Практично кожен розробник, якого я зустрічав (і я включав в себе), вважає SQL мовою програмування, і повнота Тьюрінга не є необхідним фактором для мови програмування (думаю, що DSL, які, як правило, розроблені таким чином, щоб НЕ були завершеними.) HTML і XML очевидно не є мовами програмування (хоча ви можете мати мови, орієнтовані на XML). Regexs - це не мови програмування, але автоматизовані автоматизовані автоматизовані автоматизовані.
luis.espinal

2
Це не джерело. Це посилання на дискусію (дискусії самі по собі не є джерелами), і саме вона орієнтована лише на CSS та HTML. Він не стосується тесту "повного завершення" (я пропоную прочитати роботу Мартіна Фаулера на предмет DSL), а також не є SQL мовою програмування (що це, ось фактичне джерело: en.wikipedia.org/ wiki / SQL , або це amazon.com/SQL-Programming-Language-Kirk-Scott/dp/0763766747 ). Або ви не читаєте повністю мого допису, або думаєте, що посилання на stackexchange є джерелом (якого немає.)
luis.espinal

37

це хороша практика робити?

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

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

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


14

Чи може це шкодити мені в довгостроковій перспективі (майте на увазі, моя головна мета - не бути джеком про всі торги) чи це хороша практика робити?

Знання двох або більше мов ніколи не зашкодить вам. Знання вашої мови дуже неглибоке (без розуміння внутрішніх дій) може завдати вам шкоди.

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

це хороша практика робити?

Абсолютно так!

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


1
Я не думаю, що вивчення OOP навчить вас багатьом поняттям з функціонального програмування, для одного, правила розміщення JavaScripts сильно відрізняються від інших популярних мов OOP, таких як C #, тощо. Є багато інших понять там.
phant0m

Я абсолютно згоден. Однак jQuery і KnockoutJs НЕ є мовою сценаріїв. І я б не рекомендував "вивчати jQuery" без фундаментальних знань JavaScript.
Бруно Шепер

ви не можете вивчити jQuery, не вивчаючи JavaScript в процесі, оскільки jQuery - це не мова, це бібліотека, написана мовою.
ILikeTacos

5

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


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

@LaminSanneh Вивчення іншої мови не погіршить вас на першій. Це не RPG, і ви не маєте заданої кількості балів "навичок програмування", які можна призначити для кожної мови. У гіршому випадку це забирає час, який ви присвятили б іншій мові. Але мови - це лише спосіб висловити свої ідеї, а вивчення нових мов дає вам нові, нові перспективи та ідеї, які ви можете застосувати до тих, які ви вже знаєте. Звичайно, ви не знатимете синтаксису кожної мови з власної сторони, але кого це хвилює? Це швидкий пошук Google геть
Jay

5

Протягом своєї кар’єри вам доведеться вивчати нові мови та нові технології; галузь просто цього вимагає. Під час мого першого професійного завдання мені довелося доставити код, написаний на Ada, C та Fortran, а також деякі сценарії SQL та оболонок. Мені довелося перейти з C ++ на Java і знову знову за останні пару років. Я написав сценарії оболонки в csh, bash та perl.

Виділення часу для вивчення різних мов, особливо якщо вони знаходяться в різних областях (OO, функціональна, логічна тощо), допоможе вам декількома способами. Це буде тримати ваш мозок гострим. Це допоможе вам відокремити поняття від реалізації (наприклад, хеші та карти - це не лише типи даних на певній мові). Це дасть вам краще уявлення про те, які інструменти підходять для даної проблеми (наприклад, я не буду створювати веб-сайт на C, а також не пишу драйвер пристрою в Haskell). Це може вам полегшити пошук роботи ("Ей, він уже знає Intercal 1 , нам не треба його навчати!"). Це дасть вам уявлення про те, з якими проблемами стикаються мовні дизайнери. Це може надихнути вас на створення власної мови програмування.

Як мінімум, це не дасть вам нудьгувати.


1. Жарт. Не намагайся вчитися Intercal.


4

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

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


2

У цьому є перелом і зворотний бік.

Ось перелом ...

Як зазначали інші, можливість вивчити нове і працювати з багатьма мовами та інструментами програмування майже важливо для тривалої кар'єри в програмуванні. З часом все змінюється, інструменти / мови приходять і відходять. Звичайно, є люди, які вміють програмувати в тій самій мейнфреймі COBOL, яку вони використовували у 1980-х, але це порівняно рідкісна ситуація. Більшість програмістів протягом своєї кар’єри кілька разів змінюють інструменти / мови. Іноді вас можуть прийняти на роботу, оскільки ви знаєте стару технологію або знаєте всі мови, з якими працює компанія.

Мінус - це ...

Деякі роботодавці розглядають вас як "джек усіх торгів, майстер жодних" і відхилять вашу заявку, не даючи вам шансів. Вони шукають вузького експерта в певній галузі, а не просто хорошого, добре закругленого програміста. Іноді вас можуть відірвати від HR, оскільки у вас немає "5 років безперервного досвіду роботи в [X]". Ви можете уникнути цього, пристосувавши своє резюме, щоб відповідати роботі, але це може не допомогти вам у технічному інтерв'ю.

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


+1, Більше того, я впевнений, що існує кореляція між цією меншиною організацій та поганим програмуванням та неефективністю.
K.Steff

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

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

+1 для вказівки на мінуси . Звідки я родом, кількість компаній, які вважають, що "джек усіх торгів, майстер жодних" погляд, не така вже й мала.
lsoliveira

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

2

Коли ви займалися розробкою PHP, ви писали javascript або SQL? У вашій розробці C # ви все ще можете використовувати обидва ці. Це не так нарізано і висушено, як використання однієї мови програмування.

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


2

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

В ідеалі - дуже різний підхід до тих, кого ви вже знаєте.


2

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

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

Коли я беру інтерв'ю з розробником, мені завжди подобається побачити кілька різних мов у їх резюме. Якщо розробник має "C / C ++" або "PHP та Javascript" у своєму резюме, вони виглядають набагато менш цікавими, ніж той, хто має чітке розуміння з 4 або 5 мов. Переконайтеся, що ви почуваєте себе комфортно на будь-якій мові, яку ви перераховуєте, і все, що у вашому резюме, - це чесна гра в інтерв'ю!

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


Я б сказав, якщо розробник каже "C / C ++" у резюме, я хотів би, щоб це була єдина мова. Але з іншими, нерозумними мовами, чим більше, тим краще.
Coder

2

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

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

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


2

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

Коли люди, де роблять COBOL або Fortran, вони також зазвичай роблять RPG та / або JCL.

В Unix люди працюватимуть з C, sed, awk, скриптом оболонки і майже з усім, що знаходиться в кухонній раковині Unix (майже кожен інструмент командного рядка в Unix - це власний, дуже спеціалізований DSL.)

У DOS люди програмували б на Turbo Pascal або C на додаток до пакетних сценаріїв. Пізніше, коли з'явилася Windows, це був VB або щось на зразок PowerBuilder в поєднанні з SQL і, можливо, пакетними сценаріями встановлення.

В даний час, фактично, люди "працюють" з більш ніж двома мовами в будь-який день (а під "роботою" я маю на увазі робити щоденне кодування або володіти робочими знаннями). Java або C # або VB принаймні змішуються з JavaScript і SQL. Тоді інші мови вступають у гру для сценаріїв партії / завдання тощо. Потім для кожної мови у вас є рамка, яка сама реалізує внутрішній DSL, міні-мову.

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

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

Отже, стосовно вашого запитання:

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

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


1

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

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


0

Дві мови можуть вам допомогти чи ні - це залежить. Це вам не зашкодить, це точно. Багато дияволів схиляються до думки, що використання чогось іншого, крім «основної мови», є чистою тратою часу, але я категорично не згоден. Вивчення іншої мови (та її використання) є чистою перевагою: вона дає вам інший погляд на те, як вирішити проблеми. Може статися, що ви почнете використовувати одну з мов для певних завдань (як це сталося зі мною після того, як я мав шанс вивчити та використовувати Python).


0

У цій ситуації ви не питаєте про перехід від JAVA до C # і назад весь час, натомість ви їдете з C # і PHP, що насправді не є великою справою.

Припустимо, ви хотіли зробити деякі речі на основі WEB там, де ви використовуєте стек WAMP (Windows / Apache / MySQL / PHP) та C #. Ви використовуєте C # для написання деяких служб на основі SOAP, а потім використовуєте PHP для їх споживання.

Це здається мені цілком прийнятним.

У будь-якому випадку, знання кількох мов - це добре. Чим більше ви знаєте, тим краще. Бібліотеки PHP / C # / Java / Python / javascript [наприклад, JQuery]. Будьте корисні якомога більше людей.

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