Я молодой программист, который хочет когда-нибудь работать в поле как программист. Я знаю Java, VB.NET и C #. Я хочу выучить новый язык (как программист, я знаю, что полезно расширить то, что я знаю - выучить языки, которые заставляют вас думать по-другому). Я посмотрел в Интернете, чтобы увидеть, какие языки были распространены. Все знают C и C ++ (даже те грабители, которые так мало знают о компьютерах в целом), поэтому я подумал, может, мне стоит перейти к C.
C и C ++ хороши, но они старые. Такие вещи, как Haskell и Forth (и т. Д. И т. Д.), Старые и потеряли свою популярность. Я боюсь изучать C (или даже C ++) по этой же причине. Java также довольно старая и медленная, потому что она запускается JVM и не скомпилирована в нативный код.
Я был разработчиком Windows довольно долгое время. Я недавно начал использовать Java - но только потому, что он был более универсальным и распространяемым в других местах. Проблема в том, что он не выглядит как очень полезный язык по следующим причинам:
- Это наиболее часто используемое назначение для веб-приложений и приложений для мобильных телефонов (особенно для Android).
- Что касается реальных продуктов, созданных с его помощью, единственные вещи, которые приходят на ум, это Netbeans, Eclipse (ура для создания и IDE с языком, для которого предназначена IDE - это как создание веб-страницы для написания HTML / CSS / Javascript) и Minecraft что оказывается забавным, но медленным и биполярным, насколько компьютерные спецификации. поддержка.
- Кроме этого он используется для серверов, но, черт возьми, я не только хочу создавать / настраивать серверы .
Однако языки .NET хороши:
- Люди смеются, если я даже упомяну VB.NET или C # в серьезном разговоре.
- Он не является кроссплатформенным, если вы не используете MONO (который все еще находится в разработке и должен быть улучшен).
- Не хватает низкоуровневых вещей, потому что, как и Java с JVM, он запускается / управляется CLR.
Моей первой мыслью было изучение чего-то вроде C, а затем использование его для перехода на C ++ (просто для того, чтобы убедиться, что у меня будет сильное понимание / основа), но, как я уже говорил ранее, оно становится все старше и старше с каждой минутой.
Во что я заглянул
Фантом выглядит красиво. Это как хороший посредник между моими двумя любимыми языками и даже позволяет мне публиковать между ними взаимозаменяемо, но, в отличие от того, что я хочу, он компилируется в CLR или JVM (в зависимости от того, на что вы его публикуете) вместо того, чтобы быть полной компиляцией ,
D также выглядит красиво. Похожеочень удобный язык и скратipleисточников,представляетсясамом деле лучшечем C / C ++. Я прыгнул бы прямо с этим, но я все еще не уверен в его успехе, потому что это очевидно не очень распространено в данный момент.
Есть пара других, которые выглядели довольно хорошо, и были сосредоточены на других вещах, таких как Opa с веб-разработкой и Go by GOOGLE.
Мой вопрос
Стоит ли изучать эти "экспериментальные" языки? Я читал другие вопросы, в которых говорится, что если вы не постоянно изучаете языки и открыты ко всем языкам, у вас нет правильного мышления для программирования. Я понимаю это и до сих пор не совсем понимаю, но на самом деле, если язык не станет мейнстримом, должен ли я тратить свое время на изучение чего-то другого? Я не хочу изучать старые (или скоро будущие) языки программирования. Я знаю, что многие люди считают это чем-то важным *, но задумался ли кто-нибудь из вас (если вы еще не знали) ФОРТРАН? Моя цель - оставаться в курсе, чтобы быть уверенным, что я буду успешным в будущем.
отказ
Да, я молодой программист, поэтому я, вероятно, сделал много наивных заявлений в своем вопросе. Не стесняйтесь поправлять меня НИЧЕГО! Я должен начать учиться где-нибудь, поэтому я уверен, что многие мои знания достаточно поверхностны, чтобы привести к неправильным утверждениям или ошибкам в моем мышлении. Пожалуйста, оставьте любые ваши чувства в комментариях.
Результаты...
Я действительно поражен удивительными ответами, большинство из которых так приятно указывают на мои недоразумения и неправильные суждения. Я многому научился из этого, и я очень рад использовать все, что я узнал! Я, вероятно, начну изучать Хаскель в следующем ( не очень старый язык, хотя и старше 20 лет - хахаха ), а затем начну искать другие варианты вокруг меня.
Благодарность
источник
Ответы:
Суть изучения совершенно разных языков не в изучении языков, а в том, чтобы познакомиться с различными подходами к проблемам. Инструменты для панели инструментов как бы.
Стоит отметить, что Haskell не очень старый и на самом деле очень хороший кандидат для кого-то, кто знаком только с основными языками. Даже очень старый язык, такой как Лисп, очень полезен для изучения из-за его влияния на вещи.
Кроме того, Java и .Net не интерпретируются, и я ожидаю, что вы делаете неправильные предположения, основанные на этой неправильной маркировке.
источник
Будьте в форме: получите регулярную практику
Практика делает идеальным.
Чем больше кода вы пишете и читаете , тем ближе к просветлению / мастерству вы становитесь программистом / разработчиком / инженером-программистом / гуру / ниндзя / мастером / хакером / умным словом выбора. Не только кодируя и читая больше, но и пробуя наши новые способы написания кода, вы остаетесь более непредубежденными.
Рекомендуемое чтение:
Изучение новых парадигм и особенностей языка
Возможно, вы не сможете перевести то, что вы используете в совершенно новом Super-Language-X, на ваш Enterprise-Language-Y, но, возможно, вы сможете узнать, когда это могло бы подойти. Возможно, вы сможете узнать, когда интегрировать другую технологию или стек в ваш проект, чтобы соответствовать конкретной цели. Или, может быть, вы будете знать, как использовать возможности языка Y, чтобы эмулировать классную функцию языка X, и реорганизовать свой код, чтобы извлечь из него пользу (и потенциально просветить других коллег по пути).
Например, вы могли бы открыть интересные принципы FP и захотеть адаптировать их к Java, который, возможно, не является FP по замыслу .
Рекомендуемое чтение:
Быть мастером на все руки ... Мастером некоторых?
Вы не знаете, какой язык станет основным, когда он окажется на этой «экспериментальной» стадии, поэтому вам не стоит слишком беспокоиться о ставках на один из них. Скорее всего, другие люди сделают такую же ставку и будут заинтригованы, когда увидят их в вашем резюме. Добавьте один инструмент к вашему поясу. В нашем случае не так много проблем с тем, сколько он весит в итоге.
Конечно, вы не можете стать мастером на все руки. Но вы могли бы быть мастером одного и довольно хорошо в остальном. Вы учитесь ремеслу, а наше многогранно. Регулярные упражнения, посещение семинаров, захват книг, написание нового проекта для домашних животных и другие подобные вещи - наш способ идти в ногу с постоянно растущими темпами изменений в нашей области.
Рекомендуемое чтение:
Оставайтесь адаптируемым
Если вы не научитесь приспосабливаться, это трудно сделать, когда вам это нужно. Постоянно изучая новые вещи, вы каждый раз становитесь все лучше и лучше при подборе новых вещей (при условии, что вы не ограничиваете себя очень похожими проблемами).
Это как песня Oasis "Stay Young" : оставайся молодым и непобедимым .
Если вы можете адаптироваться, вы можете выжить.
Рекомендуемое чтение:
Оставайтесь видимыми: поймите радар агентства по подбору персонала
Они используют ключевые слова и технологии в качестве флажков. Мы используем их как приманки для бездумных вербовщиков.
Это работает в обе стороны. До тех пор, пока вы действительно знаете свои вещи, хорошо иметь много вещей в своем резюме. Это показывает вашу адаптивность и широту знаний. Кроме того, если вы действительно овладеете некоторыми из них, и приличны в нескольких других, это позволяет вам модулировать разные версии вашего резюме для разных должностей и должностей.
Другие полезные темы SE
источник
Чтобы расширить ответ Теластина, речь идет о воздействии различных парадигм программирования . Например, речь идет не об изучении логического программирования, а о:
http://skilldrick.co.uk/2011/02/why-you-should-learn-brainfuck-or-learn-you-a-brainfuck-for-great-good/
http://norvig.com/21-days.html (Питер Норвиг)
источник
Ну, это огромная куча заблуждений. Людям, которые знают C, труднее изучать C ++, потому что почти все, что, по их мнению, они знали о том, как использовать язык, является огромной кучей неправильного. Практически нет идиоматического Си, который даже отдаленно хорош для Си ++. Вам лучше просто изучать C ++ с нуля. Такие люди, как я, которые добровольно проводят время, чтобы помочь другим людям изучать C ++, тратят огромную часть его, пытаясь научить людей отказаться от своих привычек C.
Что касается популярности, а, C ++ будет испытывать немного возрождения в последнее время . Люди заметили , что на самом деле, производительность делает дело, много, и вы не можете уйти с работы каждый компонент как управляемый одной и современный C ++ (особенно с C ++ 11) нет абсолютно ничего , как С мусором они думали , что это было и это действительно не так уж и плохо. Это на самом деле не становится старше. Становится все новее. Новый стандарт представляет собой обширное обновление - и нет подходящих языков замены, ни текущих, ни находящихся в стадии разработки, для многих областей, в которых сейчас используется C ++. Это не в последнюю очередь потому, что нет языков с достойной совместимостью с C ++ (даже с самим C ++), что затрудняет миграцию с существующих кодовых баз C ++.
Получить новых людей. AFAIK, VB.NET на самом деле не существует ни по какой причине, кроме как для помощи в переходе с VB6, и на самом деле не является достойной целью, но C # - настоящий язык. Это похоже на Java, за исключением того, что они добавили реальные языковые функции и несколько хороших библиотек. C # является очень популярным, хорошо поддерживаемым языком с очень хорошими инструментами в VS, которые не сосут , что плохо, и является твердым, если не исключительным, что нужно учиться.
MONO довольно стабильный. Плюс, в конечном счете, 90% пользователей настольных компьютеров (или 80%?) Используют Windows прямо сейчас. Если вы собираетесь разрабатывать настольное приложение, остается открытым вопрос о том, стоят ли пользователи, не являющиеся пользователями Windows, времени на поддержку, даже если вы используете кросс-платформенный язык.
В конечном счете, вы могли бы многому научиться, изучая язык, такой как C ++ или Haskell, который сосредоточен на сильной технологии компиляции, а не на массивной среде выполнения.
Просто не выбирайте PHP. Единственное, чему вы можете научиться, это как не строить язык.
источник
Пара комментариев о том, что вы сказали ...
1) Каждый программист должен изучать C, даже если он старый. Это отличный язык для приближения к машине. От совета Джоэла к студентам CS ....
2) Языки могут быть полезны для изучения мышления, даже если они не используются широко. Изучите Scheme (или LISP), чтобы понять функциональное программирование, даже если оно не модно. Из другого поста на этой доске .
Теперь, несмотря на то, что вы напали на свое первоначальное положение, я думаю, что вы должны быть благодарны за ваше любопытство. Слишком много людей устаревают из-за отсутствия любопытства. Воспользуйтесь преимуществами своего личного развития - это отличный знак того, что вы будете хорошо развиваться. Люди, которые учатся больше всего, хотят задавать вопросы о том, как все работает.
источник
ЛЮБОЙ язык, который вы изучаете, изменится в ближайшие 5 лет. Речь идет не об изучении языка, который, по вашему мнению, может занять какое-то время, а скорее о том, КАК учиться. Чем больше вы будете изучать язык и чем больше будете его изучать, тем больше вы сможете в конечном итоге!
Последняя компания, в которой я работал, использовала свой собственный язык. Это было похоже на Visual Basic, но не то же самое. Просто из-за того, что я знал другие языки, я смог освоить их язык намного быстрее, чем другие сотрудники.
Я выучил японский после того, как выучил C ++, BASIC, Pascal, и я могу сказать, что изучение компьютерного языка и иностранного языка требует одинаковых навыков. Эти навыки могут быть потеряны или отточены. Если у вас есть драйв, продолжайте в том же духе и изучайте новые языки!
(ps. что касается изучения FORTRAN или ассемблера, я думаю, что полезно взять хотя бы один семестр старых языков. Это заставляет вас думать о вещах, которые вы просто считаете само собой разумеющимся на более новых языках, таких как флаги, распределение памяти и тому подобное .)
источник
Лучше выучите как можно больше «старых» языков, если вы когда-нибудь захотите стать программистом. Начните с Lisp, получите хорошее представление о Forth, обратите пристальное внимание на эволюцию всех языков Wirth, эволюцию Fortran, взлет и падение Prolog, проникните в скрытную экосистему Ada, получите свое секретное оружие от изучения Occam. Погоня за «мейнстримом» - это самая глупая вещь, которую может сделать начинающий программист.
источник
Я согласен с вами на разоблачительной части вещей. Хотя я знаю Java, C, C ++, Javascript, Python, Ruby и немного .NET (в первую очередь потому, что я ненавижу все, что касается M $ <- личное мнение), я должен сказать, что я действительно люблю программировать на D.
У D есть действительно хороший набор функций (большинство из них реализованы на C ++ / Java (языки, в которых есть абстракции классов) и т. Д.), Но единственное, что мне больше всего нравится - это дженерики и делегаты (упрощает реализацию обратных вызовов). Кроме того, вы получаете гораздо более простой синтаксис по сравнению с C ++. У D есть действительно эффективный сборщик мусора, хотя вы можете самостоятельно обрабатывать память (особенно при взаимодействии с модулями C / C ++). Хотя у D нет множества пользовательских модулей, которые не должны быть препятствием для входа. Вы можете легко взаимодействовать с существующими библиотеками C / C ++ (которые приятны), что делает его избыточным для использования модулей.
D имеет свою собственную стандартную библиотеку (Phobos), которая отвечает всем распространенным задачам программирования. Существует также альтернативная библиотека ( Tango-D2 ), которую вы можете использовать как с Фобосом, так и отдельно. Если вы веб-разработчик и нуждаетесь в написании сервера на основе событий, у Tango есть хорошая абстракция Selector (tango.io.Selector только для select (), poll (), epoll ()). Я нашел, что это работает даже лучше чем libev.
источник
Языки разрабатываются для решения проблем в некоторой области (по крайней мере, на первых порах). Если вы не сталкивались с проблемами, которые ваши инструменты не могут решить так, как вам удобно, вы будете стучать по деревянной доске, рассчитывая стать плотником. Постарайтесь понять, какие проблемы пытаются решить языки. Единственная разница между «экспериментальным» языком и новым / хип классным языком парня заключается в деньгах, которые его поддерживают, например, Go от Google и Dart. Если они были разработаны на моем заднем дворе, они, вероятно, умрут на каком-то форуме, и все. Они выживают, только если они хорошо объясняют проблемы, которые пытаются решить. Или наоборот, как Perl и C ++, которые хорошо усваивают способы решения проблем, чтобы продолжать жить. И я мог бы предложить изучить Lua, это Язык, созданный для встраивания в программы, очень быстрый и легкий, что даст вам инструменты для решения больших или малых проблем, которые некоторые языки, такие как Java, не могут решить простым способом. На примере японского языка, если вы просто изучите синтаксис, грамматику и алфавиты, игнорируете культуру, вы никогда не поймете, почему это так сложно, и в конечном итоге забудете все об этом. Это ничего не решает для вас.
источник
Изучение нескольких разных языков даст вам более широкое представление о программировании. Акцент на «другом» - например, изучение C # и Java не научит вас намного большему, чем изучение только одного из них. Но изучение C # или Java и функционального языка (например) будет.
Сказав это, будучи молодым программистом, я думаю, что вы получите гораздо больше пользы от того, чтобы действительно усвоить один язык, прежде чем суетиться, глядя на разные типы языков. Из вашего вопроса не совсем понятно, насколько хорошо вы знаете Java, VB.NET и C #. Уверены ли вы, что если вы напали на проект с использованием одного из перечисленных выше языков, вашим узким местом станет сам проект, а не ваше знание языка? Если бы вы проводили больше времени, спрашивая себя: «Как мне сделать это на языке ?» чем бы вы думали о реальной проблеме, вам, вероятно, нужно больше сосредоточиться на одном из ваших текущих языков.
И лично я думаю, что вы должны принять прагматичный подход к решению, какой это. Java используется для приложений Android? Отлично, если вас интересует создание приложений для Android. Не имеет значения, если это не так. C # не очень подходит для разработки не-Windows? Плохие новости, если вы заинтересованы в разработке для Linux. Не имеет значения, если нет. И так далее.
А "экспериментальные" языки вы упомянули? С практической точки зрения, они плохо подойдут для работы с другими людьми - вы, вероятно, найдете тысячу людей, которые знают C # или Java для каждого, кто знает Fantom. Для личных проектов это не обязательно проблема. Если ваша цель состоит в том, чтобы увеличить вашу возможность трудоустройства, это так.
источник
Вы могли бы сказать, что обучение программированию на таком языке, как Postscript или APL, возможно, пустая трата времени, прежде всего потому, что шансы на то, что вы когда-либо будете использовать эти знания, приближаются к нулю. Но в том же духе вы можете утверждать, что Ruby и Python - пустая трата времени, если вы никогда не собираетесь использовать их для чего-либо.
Но мало кто скажет, что изучение Lisp - это пустая трата времени, даже если вам, вероятно, придется писать Lisp как Postscript; но изучение Lisp учит вас думать по-другому о вашей проблеме (надеюсь), поэтому большинство программистов скажут вам, что это стоит вашего времени.
Тем не менее, я никогда не уклоняюсь от изучения нового языка, поскольку требуемые временные затраты составляют всего лишь час или четыре. И использование такого языка, как Lua, появляется в самых необычных местах , и вы бы никогда не узнали их, если бы не потратили несколько часов на просмотр примеров.
Когда вы видите новый язык, прочитайте немного о том, для чего он полезен. Если это ниша, которую ваши любимые языки не освещают слишком хорошо, то потратьте один день на изучение основ. Это, безусловно, время, проведенное лучше, чем просмотр 17-го сезона «Холостяка», иначе вы можете потратить время впустую. Таким образом, если у вас есть его использование, оно может всплыть, и вы знаете, где узнать больше.
Я лично очень рекомендую заглянуть в Go. Я использовал его для написания одностраничных программ, которые работают лучше, чем то, что заняло бы три дня и 13 сторонних библиотек на C или C ++, и даже не было бы возможно на Python, C #, Ruby и т. Д. Он был разработан людьми, которые действительно, действительно, действительно знают свое дело.
источник
Выберите те с разными типами. Сгруппируйте их по функциям и выберите по одному в каждой группе. Если вы хотите сделать это профессионально, выберите тот, который используется (например, C ++ вместо D для статически типизированного компилируемого языка с шаблонным метапрограммированием).
Плохо D, это хороший язык, но ему не хватает убойного приложения, которое было у C ++: почти полная обратная совместимость с языком № 1 того времени (C для случая C ++). Это хорошо, но этот важный маленький факт, вероятно, отодвинет D на второй план в учебниках истории.
источник
C может быть старым, но он все еще очень мощный и интересный, изучение C очень поможет вам в вашем будущем "программирования".
Java не медлителен, кто бы ни сказал вам, что не знает, о чем говорит, Java узнает вас тонну об ООП
Почему бы вам просто не начать с Python, а затем перейти к C или что-то еще,
источник