Для меня я C # и Java человек. Я считаю, что эти два языка очень похожи, поэтому мне легче пересекать друг друга. Я не уверен, стоит ли выбирать другие языки. Есть предположения?
Для меня я C # и Java человек. Я считаю, что эти два языка очень похожи, поэтому мне легче пересекать друг друга. Я не уверен, стоит ли выбирать другие языки. Есть предположения?
Ответы:
Я могу придумать, по крайней мере, пять причин для изучения языка, и кажется, что в конечном итоге вы должны выучить одну для каждого из них.
Дело не в том, сколько языков вы изучаете. Это об изучении новых концепций. Некоторые языки могут научить вас многим понятиям, в то время как другие могут научить только одному.
Если вы знаете C #, вы, вероятно, не узнаете ничего страшного, изучая Java. Но вы бы, если бы вы узнали Haskell.
Поэтому, когда вы выбираете новый язык для изучения, выбирайте то, что научит вас понятиям, которых вы еще не знаете.
Я бы сказал, что самое важное - это способность быстро учиться. Тем не менее, важно знать разные языки, которые используются для разных целей. Например я знаю:
1) Python и Perl для категории языков сценариев
2) C ++ как «каркасный» язык
3) Java для мобильных приложений
4) C для огромного количества унаследованного кода
5) Некоторые устаревшие языки, которые я знал в молодости (Basic, Pascal, Clipper и т. Д.)
Я бы сказал, что вам нужен хотя бы основной язык и язык сценариев. Зная C #, я бы сказал, что вам нужно изучить Python, Perl или Ruby. (Я бы пошел с Python, но это просто вопрос предпочтений).
Хорошо изучать один новый язык программирования каждый год. Но вместо того, чтобы изучать что-то похожее на то, что вы уже знаете, я посоветую вам узнать что-то радикально отличное от Scala или F #. Он покажет вам новые способы делать вещи и в конечном итоге обогатить ваши навыки программирования.
Вы должны сосредоточиться на языках, которые вам нужны, и использовать то, что вы делаете . На самом деле изучение языка происходит от практики, поэтому вы получаете пользу от этого языка, когда практикуете его. Если вы собираетесь изучать новый язык в свободное время, сделайте это, внедрив его в задачи повышенной сложности, чтобы вы действительно справились с этим.
сосредоточиться ни на чем. сосредоточиться на изучении и написании чистого кода; ясно, выразительно, просто и, самое главное, не дублируется.
пойти на принципы этого типа программирования, основы (например, инкапсуляция для ООП; что такое средства и что это подразумевает) и изучить некоторые принципы
этот материал облегчит вашу работу. это даже облегчит людям, которые работают с вами или после вас.
да, вы тоже должны хорошо знать синтаксис. но это не то, что занимает ваше внимание долгое время
и да, вы тоже должны хорошо понимать технологии, которые используете. но они могут быть расставлены по приоритетам в соответствии с уровнем сложности вашего бизнеса.
последние два не в центре внимания, но в некотором фокусе
Программист должен сконцентрироваться на программировании, а не на специфическом языке.
Столько, сколько нужно, чтобы сделать вашу работу.
Но C # и Java так же близки, как британский английский и американский английский. Вы можете узнать что-то новое , перейдя на финский или навахо.
Я не думаю, что вы обязательно овладеете языком, не имея достаточного понимания других языков, чтобы увидеть этот язык «извне» как бы. Каждый отдельный язык вносит что-то еще в таблицу, и концепции, которые они приносят, - это вещи, которые вы можете перенести на основные языки, с которыми вы работаете.
Поэтому время, потраченное на изучение использования других языков, никогда не теряется, даже если вы не планируете использовать их в коммерческих целях.
Старая поговорка - учить язык каждый год, и я бы, конечно, сказал, что в первые десять лет или около того вам нужно это делать. Возможно, помимо этого, вы могли бы выбрать между более глубоким изучением некоторых из тех, которые вы уже знаете (возможно, обновляете свои знания тех, которые вы узнали несколько лет назад), или работать с конкретными библиотеками, а не просто бесконечно накапливать новые языки, но при этом следить за изучение практики программирования посредством работы с разными языками, безусловно, поможет вашему развитию как программиста.
Популярные языки программирования, такие как C # и Java, позволят вам успешно работать в большинстве мест, но ни один из них не будет достаточно отличаться друг от друга для изучения новых способов решения проблем. Я думаю, что есть некоторые языки, на которых вы едите (те, которые вы используете для своей работы), и другие, на которых вы играете. У обоих есть свои цели.
Я обнаружил, что, изучая новые языки программирования, я также изучал новые и более элегантные способы решения проблем. Дело не в количестве языков или в том, как часто вы их выбираете. Каждый язык программирования, который стоит изучать, имеет уникальную точку зрения, которая заставляет вас подходить к своим проблемам с новым мышлением. Много раз ценность приходит от изучения этого мышления.
Я играл с Smalltalk, и мне это нравилось. С языком было просто приятно развиваться. Как только вы привыкли к идиомам, они помогли вам быть более выразительными с вашим кодом. Я совсем не пропустил статическую типизацию, которую вы имеете в Java / C ++ / C #. Обобщения, с которыми мы живем в наших статически типизированных языках, действительно являются конструкциями, позволяющими обойти ограничения, накладываемые статической типизацией.
Я регулярно использую Ruby и Ruby on Rails, хотя сейчас я не оплачиваю работу. Принцип конструирования Руби заключался в «повышении счастья программиста». Вы должны любить это чувство, и по большей части я думаю, что оно доставляет.
В конечном итоге Java пойдет по пути LISP и Smalltalk, а C # последует их примеру. Что будет там, чтобы занять их место, еще неизвестно. В конце концов, если вы знаете, как решать проблемы, и у вас есть несколько способов нарезать и вырезать проблему, вы сможете найти работу и выбрать любой язык, который вам необходим.
Когда дело доходит до поддержания навыков и гибкости, я думаю, вы должны стараться изучать по крайней мере один совершенно новый язык программирования каждые 6 месяцев или около того. И я имею в виду язык, который очень, очень отличается.
Так что, изучая больше .net Framework, используя C # или Java, можно поддерживать гибкость, изучение Haskell, Smalltalk, Scala, Clojure или Ruby расширит вашу технику и поможет вам мыслить по-разному, некоторые из которых вы можете использовать с пользой. вернуться к вашему основному языку, и некоторые из них могут помочь вам двигаться дальше, если Java перестанет быть царем холма.
Если вы никогда не изучали C, то хотя его синтаксис перенесен в Java, образ мыслей может быть совершенно другим. Это стоит знать подробно и даже лучше, понимая, как ОО-код может быть написан на этом языке, который кажется только процедурным.
Я рекомендую прочесть книгу Брюса Тейта «За пределами Java», в которой слишком хорошо подчеркивается опасность присутствия только на одном языке, отмечая взлет и падение C ++. Хотя C ++ еще далек от смерти и у него остались десятилетия, становится все более и более ограниченным использование только в ситуациях, которые не могут выиграть от повышения производительности в других языках. В отличие от этого, Sinatra, фреймворк ruby, позволяет создавать простой веб-сервис из примерно 6/7 строк кода, эквивалент C ++ может быть на порядок больше, чем этот.
Если вы не являетесь носителем английского языка, по крайней мере, вы должны сосредоточиться на улучшении вашего английского . Я говорю это исходя из моего опыта. Понимание этого языка мне очень помогло.
Все хорошие материалы (книги, статьи, код и т. Д.) Для изучения языков программирования, технологий и новых концепций написаны на английском языке.
Языки - это инструменты для выполнения работы. Некоторые языки хороши для некоторых типов проблем, другие, как правило, хороши для решения всех видов проблем. Я рекомендую изучать новые языки по мере их появления. Не зацикливайтесь на том, что модно в этом месяце, но узнайте, что они могут сделать, в чем они хороши. Мой совет - 1 новый язык в год. Они выходят быстрее, чем это, но вы надеетесь поместить новые инструменты в свой набор инструментов, а не быть модным новым ребенком в блоке.
Одним из эссе, в котором говорится о различиях в языках, является книга Пола Грэма «Обгоняя средние» Я рекомендую прочитать его, но здесь есть одна важная часть (он использует «Blub» в качестве гипотетического языка, чтобы вы не спорили о том, что может сделать ваш любимый язык):
Или как насчет Perl 4? Между Perl 4 и Perl 5 в язык добавлены лексические замыкания. Большинство хакеров Perl согласились бы, что Perl 5 более мощный, чем Perl 4. Но как только вы это признали, вы признали, что один язык высокого уровня может быть более мощным, чем другой. Из этого неизбежно следует, что, за исключением особых случаев, вы должны использовать самое мощное, что вы можете получить.
Однако эта идея редко сопровождается ее завершением. После определенного возраста программисты редко переключают языки добровольно. К какому бы языку люди ни привыкли, они склонны считать его достаточно хорошим.
{} Надрез
Пока наш гипотетический программист Blub смотрит на энергетический континуум, он знает, что смотрит вниз. Языки менее мощные, чем Blub, очевидно, менее мощные, потому что им не хватает некоторых функций, к которым он привык. Но когда наш гипотетический программист Blub смотрит в другом направлении, вверх по силовой среде, он не понимает, что смотрит вверх. То, что он видит, это просто странные языки. Вероятно, он считает их примерно равными по силе Блюбу, но с учетом всего этого и другого волосатого материала. Blub достаточно хорош для него, потому что он думает в Blub.
Однако, когда мы переключаемся на точку зрения программиста, использующего любой из языков выше энергетического континуума, мы обнаруживаем, что он в свою очередь смотрит на Блуба свысока. Как вы можете сделать что-нибудь в Blub? У этого даже нет y.
По индукции, единственные программисты, которые в состоянии увидеть все различия в мощности между различными языками, - это те, кто понимает самый мощный язык. (Это, вероятно, то, что имел в виду Эрик Рэймонд о том, что Lisp делает вас лучшим программистом.) Вы не можете доверять мнению других из-за парадокса Blub: они довольны тем, каким языком они пользуются, потому что он диктует как они думают о программах.
http://www.paulgraham.com/avg.html
Большинство приложений, которые мы отправляем, написаны на C # или VB. Когда нам нужно было добавить сценарии в приложение, мы выбрали Python (Lua был вторым). Мы изучаем F #, потому что он может сделать несколько новых вещей, которые трудно объяснить и понять, если все, что он знает, это C # / Java / VB.
ну, во-первых, есть ряд языков, которых очень трудно избежать большинству программистов: javascript, sql, c и т. д., так что вы можете с ними познакомиться, они не исчезнут.
это также хорошая идея, чтобы знать язык сценариев типа утки ... например, один из perl, python, ruby, lua и т. д., они невероятно полезны для огромного количества проблем, включая автоматизацию большинства ваших ежедневных рутинных операций.
к лучшему или к худшему, вы также, вероятно, столкнетесь с C # и / или Java в какой-то момент, они довольно распространены.
в любом случае, не ограничивайте себя искусственно. у тех знакомых мне кодеров, которые явно избегают использования интересных инструментов, похоже, скрытое мировоззрение и ограниченное влияние.
В каком-то смысле это может стать еще одним предметом против общих дискуссий. Некоторые люди могут проводить долгое время, зная один язык на больших глубинах, который им подходит. Другим людям может быть интересно узнать немного о множестве разных языков, которые прекрасно им подходят. Большинство людей находятся между этими двумя крайностями.
Если вам нужны предложения по изучению языков, вот несколько идей:
Функциональное программирование - здесь могут быть примеры Haskell или Lisp, и смена парадигмы может быть в некоторой степени отчасти поворотной.
Специфичная для базы данных - PL / SQL или T-SQL приходят на ум как нечто, что может быть полезно, если вы хотите выполнять больше серверной работы с системами, которым требуется база данных для некоторых ее функций.
Языки веб-интерфейса пользователя. В качестве примеров языков, используемых в многофункциональных интернет-приложениях, можно привести ActionScript или Javascript, хотя в некоторых случаях AIR может заставить некоторые настольные приложения использовать веб-вызовы, например Twhirl, с помощью API Twitter.
Это всего лишь идеи, и в зависимости от того, где вы хотите быть, они могут быть полезны или бесполезны для вас. Удачи в любом выборе.
Программист должен знать три языка: C, английский и Something Else.
C является базовым языком, он близок к машине и имеет синтаксические правила, общие для нескольких языков высокого уровня. C заставляет вас думать о таких вещах, как структуры данных, совершенно иначе, чем Java. Кроме того, Python и Ruby vms оба встроены в C, и вы можете встроить C в оба языка, когда хотите повысить свою скорость.
Английский является распространенным языком программирования. Большинство книг, технических отчетов, технических веб-сайтов и журнальных статей выходят вначале на английском языке, а иногда и исключительно на английском. Кроме того, если английский не является вашим родным языком, изучение английского языка расширит ваш инструментарий для манипулирования концепциями (это, конечно же, касается и тех, кто говорит по-английски, и некоторых других языков).
Something Else должен быть языком, который не является процедурным, или не является статически типизированным, или строго объектно-ориентированным, или в каком-то смысле просто фундаментально отличается от C. Haskell, Scala, Python, Ruby, некоторого диалекта Лисп, чего бы то ни было ,
После этого вы можете узнать все, что требует ваша конкретная ситуация, скорее всего, C # или Java.