Разумно ли переходить назад и вперед между двумя языками программирования? [закрыто]


28

Я пишу довольно много PHP почти два года. Сейчас я занимаюсь разработкой .NET (в основном с #). Однако иногда я возвращаюсь и делаю несколько php.

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


30
лучше быть
мастером

27
Это наверняка навредит вам, если вы ограничитесь только двумя языками. Получить больше различных инструментов в вашем наборе инструментов.
SK-logic

4
Вы задаете этот вопрос, как если бы вы были совершенно свободны в выборе между C # и PHP - так ли это на самом деле?
Док Браун

10
Знание всех грязных деталей одного языка, без сомнения, очень полезно. Но когда вы работаете с несколькими языками, вы в какой-то момент окажетесь в процессе разработки частей программы определенным образом, независимо от того, на каком языке вы сейчас работаете. Это своего рода нирвана программиста, где язык становится второстепенный и приложение, что имеет значение. Это прекрасное место, потому что это означает, что у вас есть потенциал как программиста даже в будущем, когда люди работают на каком-то новом модном языке Z ++.

2
Только два? Многие программисты регулярно работают на нескольких языках. Знание нескольких дает вам больший набор инструментов для рисования.
Калеб

Ответы:


75

Использование двух языков одновременно - ничто. Программисты нередко используют несколько разных языков каждый день. Различные задачи и разные технологии требуют разных языков.

Только сегодня, я уже использовал четыре или пять разных языков, и это интересно , потому что я haven'd сделал любое программирование до сих пор. Все, что я сделал, это работа над презентацией.

Как хороший программист, по сути требуется, чтобы вы разбирались в нескольких языках, и единственный способ достичь (и сохранить) разумной беглости - это использовать эти языки.


4
Я не уверен, что кто-то вообще может быть эффективным программистом, не используя по крайней мере 3 языка на регулярной основе.
Брайан Кноблаух

1
@Brian - эти три языка являются вашим основным разговорным / письменным языком, вашим основным языком программирования, а также SQL и / или HTML?
KeithS

2
@KeithS Только если вы создаете супер простые страницы на стороне клиента и никогда не трогаете записи XML на стороне сервера. CSS и Javascript считаются их собственными языками, как и XPath, XSLT и XQuery.
Такро

2
Все, что содержит «Большинство людей» или «большинство разработчиков», должно сопровождаться цитированием. В противном случае это субъективно. Почти каждый разработчик, с которым я встречался (и я в том числе), считает SQL языком программирования, и полнота по Тьюрингу не является необходимым фактором для языка программирования (например, DSL, которые обычно НЕ предназначены для завершения по Тьюрингу ). HTML и XML, очевидно, являются не языки программирования (хотя у вас могут быть основанные на XML доменные языки). Регулярные выражения - это не языки программирования, а программируемые / конфигурируемые автоматы.
luis.espinal

2
Это не источник. Это ссылка на обсуждение (обсуждения сами по себе не являются источниками), и она ориентирована только на CSS и HTML. Он не касается теста «полный тест Тьюринга» (я предлагаю вам прочитать работу Мартина Фаулера над предметом DSL), а также того, является ли SQL языком программирования (а это фактический источник: en.wikipedia.org/ вики / SQL , или этот amazon.com/SQL-Programming-Language-Kirk-Scott/dp/0763766747 ). Либо вы не читаете мой пост полностью, либо считаете, что ссылка на stackexchange является источником (а это не так)
luis.espinal

37

это хорошая практика, чтобы делать?

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

Языки и технологии очень быстро зарекомендовали себя в течение нескольких лет. Например, Objective C взлетела с удивительной силой, будучи почти мертвой в течение двух с половиной десятилетий - вечность по стандартам этой отрасли!

Не имеет большого значения, что вы планируете «не быть мастером на все руки»: если вы планируете оставаться в отрасли достаточно долго, можно с уверенностью предположить, что вам придется переключать свой технологический стек хотя бы один раз на протяжении всей вашей карьеры. Использование нескольких языков теперь позволяет вам подготовиться к переключению на разумно короткие сроки.


14

Повредит ли это мне в долгосрочной перспективе (учтите, моя главная цель - не быть мастером на все руки) или это хорошая практика?

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

Моим личным предпочтением всегда было сначала освоить один объектно-ориентированный язык программирования . Это обеспечит вам глубокое изучение всех концепций программирования и облегчит изучение следующей, когда возникнет такая необходимость.

это хорошая практика, чтобы делать?

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

Я бы определенно предложил изучить больше чем один и практиковать их, создавая некоторые приложения. Между тем, вы также можете планировать изучение некоторых языков сценариев (jQuery, KnockoutJs и т. Д.) И библиотек, если вы занимаетесь веб-разработкой или планируете заниматься ею.


1
Я не думаю, что изучение ООП научит вас многим концепциям функционального программирования, например, правила области видимости JavaScripts сильно отличаются от других популярных языков ООП, таких как C # и т. Д. Есть много других концепций.
phant0m

Я полностью согласен. Тем не менее, jQuery и KnockoutJs не являются скриптовыми языками. И я бы не советовал «изучать jQuery» без фундаментальных знаний JavaScript.
Бруно Шеппер

вы не можете выучить jQuery, не изучая JavaScript в процессе, потому что jQuery - это не язык, это библиотека, написанная на языке.
ILikeTacos

5

В долгосрочной перспективе это не должно причинить вам вреда, поскольку знание нескольких языков делает вас всесторонним разработчиком. Использование «правильного инструмента для правильной работы» является конечной целью, а знание различных языков помогает вам достичь этого, поскольку вы знаете, что еще существует, и может принять хорошо обоснованное решение о том, какую платформу / структуру / язык использовать для сделать что-нибудь


Спасибо за ответ, но мне было интересно, не повредит ли частая перемена моему процессу обучения или продлит его или это зависит только от способностей человека?
Ламин Саннех

@LaminSanneh Изучение другого языка не делает вас хуже на первом. Это не RPG, и у вас нет заданного количества очков «навыков программирования», которые вы можете присвоить каждому языку. В худшем случае это отнимает время, которое вы бы посвятили другому языку. Но языки - это просто способ выражения ваших идей, а изучение новых языков дает вам новые, свежие перспективы и идеи, которые вы можете применить к тем, которые вы уже знаете. Конечно, вы не будете знать синтаксис каждого языка, но кого это волнует? Это быстрый поиск Google далеко
Jay

5

В течение вашей карьеры вам придется изучать новые языки и новые технологии; индустрия просто требует этого. Во время моего первого профессионального задания мне пришлось доставить код, написанный на Ada, C и Fortran, вместе с некоторыми сценариями SQL и shell. За последние пару лет мне пришлось переключиться с C ++ на Java и обратно. Я написал сценарии оболочки на csh, bash и perl.

Если вы потратите время на изучение разных языков, особенно если они находятся в разных областях (OO, функциональный, логический и т. Д.), Это поможет вам несколькими способами. Это будет держать ваш мозг острым. Это поможет вам отделить концепции от реализации (например, хеши и карты - это не просто типы данных на определенном языке). Это даст вам лучшее представление о том, какие инструменты подходят для данной проблемы (например, я бы не стал создавать веб-сайт на C и не писал бы драйвер устройств на Haskell). Вам может легче найти работу («Эй, он уже знает Intercal 1 , нам не нужно его обучать!»). Это даст вам представление о том, с какими проблемами сталкиваются дизайнеры языка. Это может вдохновить вас на создание собственного языка программирования.

По крайней мере, это позволит вам не скучать.


1. Шутка Не пытайтесь изучать интеркаль.


4

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

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


2

У этого есть свои плюсы и минусы.

Вот плюс ...

Как уже упоминалось, способность изучать новые и работать со многими языками и инструментами программирования практически необходима для долгой карьеры в программировании. С годами все меняется, инструменты / языки приходят и уходят. Конечно, есть люди, которым нравится программировать на том же мейнфрейме COBOL, который они использовали в 1980-х, но это относительно редкая ситуация. Большинство программистов заканчивают тем, что меняли инструменты / языки несколько раз в течение своей карьеры. Иногда вас могут нанять, потому что вы знаете более старую технологию или знаете все языки, с которыми работает компания.

Недостатком является ...

Некоторые работодатели увидят в вас «мастера на все руки, мастера на все руки» и отклонят ваше заявление, не дав вам шанса. Они ищут узкого специалиста в конкретной области, а не просто хорошего, всестороннего программиста. Иногда вы можете быть уволены из-за HR, потому что у вас нет «5 лет непрерывного опыта в [X]». Вы можете избежать этого, адаптируя свое резюме к своей работе, но это может не помочь вам в техническом собеседовании.

На мой взгляд, положительный эффект намного лучше, но вы должны знать, что меньшинство организаций считает это негативным.


+1, Более того, я уверен, что есть корреляция между этим меньшинством организаций и плохим программированием и неэффективностью.
К.Стефф

2
Этот негатив нивелируется работодателями, которые считают, что все наоборот. У меня есть право голоса при принятии решений о найме, когда я работаю, и мне будет очень трудно убедить, что все равно можно нанять кого-то, у кого за плечами был только один язык программирования. Может быть, для младшей должности, но, конечно, не для старшего разработчика.
Джон Ханна

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

+1 за указание на минусы . Откуда я, количество компаний, сохраняющих эту точку зрения «мастер на все руки, мастер ни один», не так уж мало.
Изоливейра

Да, но мы могли бы превратить это в любое хорошее качество; В HR всегда может быть идиот, который считает, что это плохое качество. В конечном счете, однако, если HR в организации - идиоты, они будут нанимать на работу, и, будучи принятым на работу, это может быть лучше, чем уровень безработицы, вы сразу же будете искать новую работу и искать работу где-нибудь еще. ,
Джон Ханна

2

Когда вы занимались разработкой PHP, вы писали JavaScript или SQL? В вашей разработке на C # вы все еще могли бы использовать оба из них. Это не так просто, как при использовании одного языка программирования.

Если вы счастливы делать это, не беспокойтесь об этом. Если вы не хотите заниматься обоими (или обоими), у вас есть проблема.


2

Изучение нового языка программирования научит вас вещам о программировании, которые вы можете применять к языкам, которые вы уже знаете. Вам определенно следует подумать, по крайней мере, поиграть с некоторыми другими языками, даже если вы не используете их профессионально, а не просто так мало.

В идеале, тот, который очень отличается в подходе к тем, кого вы уже знаете.


2

Нет, нет ничего плохого в изучении нескольких языков и использовании их всех довольно часто. В своей повседневной жизни я могу встретить Ruby, PHP, JavaScript, CoffeeScript, Python и иногда C. Я достаточно хорошо знаю все эти языки, и переход от одного к другому просто переключает мой мозг. Конечно, я скучаю по особенностям некоторых языков, когда перехожу на другой, но вы это преодолеете.

Я стараюсь всегда иметь язык, который я изучаю всесторонне, а затем еще один, как "готовящийся к работе". Таким образом, у вас всегда есть четкая образовательная цель, а затем что-то на горизонте. Сейчас мой основной язык - Ruby, и я экспериментирую с Go. Я, вероятно, никогда не найду работу в качестве разработчика Go, но изучение нового языка сделало его лучшим разработчиком.

Когда я беру интервью у разработчика, мне всегда нравится видеть несколько разных языков в их резюме. Если у разработчика есть "C / C ++" или "PHP и Javascript" в их резюме, они выглядят гораздо менее интересными, чем те, кто твердо владеет 4 или 5 языками. Убедитесь, что вы чувствуете себя комфортно на любом языке, который вы перечислите, все, что в вашем резюме, является честной игрой в интервью!

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


Я бы сказал, что если разработчик говорит «C / C ++» в резюме, я бы хотел, чтобы это был единственный язык (и). Но с другими, надежными языками, чем больше, тем лучше.
Кодер

2

При просмотре резюме мы обычно ищем кого-то, кто знает несколько языков. Кроме того, по мере того, как опыт человека увеличивается, количество языков, которые он использовал, также должно увеличиваться.

В нашей среде нам часто приходится решать новые и интересные проблемы, и мы ищем людей, которые готовы вмешаться и решить эти проблемы, независимо от того, нужно им изучать новый язык или нет. Проблема может быть в коде, работающем на рабочем столе Windows, сервере Windows, сервере Linux или в браузере.

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


2

Люди всегда программировали на нескольких языках. Когда люди использовали Assembly, им приходится использовать новый язык Assembly каждый раз, когда они меняли архитектуру.

Когда люди делали COBOL или Fortran, они также обычно делали RPG и / или JCL.

В Unix люди будут работать с C, sed, awk, shell-сценарием и почти всем в кухонной раковине 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.