Программисты придумали и реализовали множество
языков программированиядля решения различных задач. Языки программирования общего назначения могут быть использованы для решения любой задачи
( Read more... )
Я в этих высоких материях ничего не понимаю, можете, пожалуйста, пояснить на примере? А то мне казалось, что при командной разработке(а сольное программирование, вроде как, скорее исключение, чем правило) выгода от знания многих языков стремится к нулю(причем стремится к нулю слева =) ).
Вот есть, предположим, команда из Антона, Бориса, Виктора, Василисы и Васисуалия. Пишут они все проект на Java. Антон, кроме Java, владеет AWK, Perl, Erlang и Haskell. Борис, соответственно, sed и Python. Виктор, Василиса и Васисуалий знают только Java(пусть для равновесия знают лучше, чем Антон с Борисом) и счастливы, ибо проект их на Java. Ну не читали они этот пост и не в курсе, что должны знать несколько языков. =)
Понадобилось этой команде текстовые файлы обрабатывать(нужно два десятка "простых для языка не-общего назначения" скриптов). Причем один раз написать и забыть - не вариант: из постановки задачи понятно, что написанное придется изменять постоянно, чтобы успеть за изменениями реального мира. Антон и Борис на пару пришли бы к какому-то консенсусу(например, Python). Но что делать с Виктором, Василисой и Васисуалием? Даже если научить их Python-у в рабочее время, что будет через год, когда Виктора уволят за пьянство, Василиса уйдет в декрет, а Васисуалия сманят работать в Гугл? Учить пришедших Глеба, Галину и Герасима Python-у или сразу искать двуязычных программистов?
Разве в реальном мире в данном случае не выберут Java(пусть Антону и Борису будет не так удобно, как хотелось бы, зато все смогут читать и модифицировать код)? Тогда получается, что знание дополнительных языков Антону и Борису в настоящем ничего, кроме чувства внутреннего дискомфорта, не дает. Польза от расширения кругозора довольно эфемерна. Да и расширять его можно множеством других способов.
Нет, это не значит, что я автоматом не возьму его на должность программиста, но это сильно сужает область задач, которые ему можно поручить именно в силу того, что при таком подходе он не сможет найти оптимальное решение многим задачам. Значит ли это, что у Антона и Бориса будут какие-то свои "особые" задачи, к которым "всякие Васисуалии" допущены не будут? А как много таких "особых" задач? А то терзают смутные сомнения, что их хватит только Антону и бедный Борис будет продолжать чувствовать внутренний дискомфорт, сочиняя очередные "2 строчки для AWK" на Java, хотя с этими "особыми" задачами справился бы на ура. Да и потом, если эти задачи "особые", то значит есть задачи "неособые"(для тех, кто знает один язык). Что как-то слабо вяжется с Однако, в современном мире получается так, что каждый программист должен знать несколько языков программирования.
Обычно, даже при командной разработке корпоративных приложений, команде по факту приходится использовать множество языков начиная от языка командной оболочки и системы сборки, до SQL и Java. Поэтому знание множеста языков безусловно нужно всей команде дла начала просто чтобы понимать друг-друга. Дальнейшие знания расширяют гругозор программиста и позволяют ему более эффективно решать поставленные задачи не обязательно за счет использования каких-то экзотических языков, а в первую очередь именно за счет более широкого кругозора.
Если, условно, Антона руководитель попросил подготовить какой-нибудь отчет с анализов результатов каких-нибудь тестов, то Антон, имея более широкий круг знаний и владея более широким кругом инструментов, подготовил его, условно за три часа, а Виктор на аналогичное задание в прошлый раз потратил два дня. Поэтому Виктору больше таких заданий поручать не будут, а Антону будут поручать и другие исследовательские и аналитические задачи и он будет быстрее расти по каръерной лестнице.
Да и даже код на Java Антон будет делать быстрей и качественней, ибо более широкий кругозор позволит ему видеть больше стандартных шаблонов в кодезадаче. Ему не придется изобретать каждый раз решение -- он чаще будет делать их на основе известных ему из другий областей решений похожих задач.
Вот есть, предположим, команда из Антона, Бориса, Виктора, Василисы и Васисуалия. Пишут они все проект на Java.
Антон, кроме Java, владеет AWK, Perl, Erlang и Haskell.
Борис, соответственно, sed и Python.
Виктор, Василиса и Васисуалий знают только Java(пусть для равновесия знают лучше, чем Антон с Борисом) и счастливы, ибо проект их на Java. Ну не читали они этот пост и не в курсе, что должны знать несколько языков. =)
Понадобилось этой команде текстовые файлы обрабатывать(нужно два десятка "простых для языка не-общего назначения" скриптов). Причем один раз написать и забыть - не вариант: из постановки задачи понятно, что написанное придется изменять постоянно, чтобы успеть за изменениями реального мира.
Антон и Борис на пару пришли бы к какому-то консенсусу(например, Python).
Но что делать с Виктором, Василисой и Васисуалием?
Даже если научить их Python-у в рабочее время, что будет через год, когда Виктора уволят за пьянство, Василиса уйдет в декрет, а Васисуалия сманят работать в Гугл? Учить пришедших Глеба, Галину и Герасима Python-у или сразу искать двуязычных программистов?
Разве в реальном мире в данном случае не выберут Java(пусть Антону и Борису будет не так удобно, как хотелось бы, зато все смогут читать и модифицировать код)?
Тогда получается, что знание дополнительных языков Антону и Борису в настоящем ничего, кроме чувства внутреннего дискомфорта, не дает. Польза от расширения кругозора довольно эфемерна. Да и расширять его можно множеством других способов.
Нет, это не значит, что я автоматом не возьму его на должность программиста, но это сильно сужает область задач, которые ему можно поручить именно в силу того, что при таком подходе он не сможет найти оптимальное решение многим задачам.
Значит ли это, что у Антона и Бориса будут какие-то свои "особые" задачи, к которым "всякие Васисуалии" допущены не будут? А как много таких "особых" задач? А то терзают смутные сомнения, что их хватит только Антону и бедный Борис будет продолжать чувствовать внутренний дискомфорт, сочиняя очередные "2 строчки для AWK" на Java, хотя с этими "особыми" задачами справился бы на ура.
Да и потом, если эти задачи "особые", то значит есть задачи "неособые"(для тех, кто знает один язык). Что как-то слабо вяжется с Однако, в современном мире получается так, что каждый программист должен знать несколько языков программирования.
Reply
Если, условно, Антона руководитель попросил подготовить какой-нибудь отчет с анализов результатов каких-нибудь тестов, то Антон, имея более широкий круг знаний и владея более широким кругом инструментов, подготовил его, условно за три часа, а Виктор на аналогичное задание в прошлый раз потратил два дня. Поэтому Виктору больше таких заданий поручать не будут, а Антону будут поручать и другие исследовательские и аналитические задачи и он будет быстрее расти по каръерной лестнице.
Да и даже код на Java Антон будет делать быстрей и качественней, ибо более широкий кругозор позволит ему видеть больше стандартных шаблонов в кодезадаче. Ему не придется изобретать каждый раз решение -- он чаще будет делать их на основе известных ему из другий областей решений похожих задач.
Reply
Leave a comment