2010-01-23 3 views
5

Мне всегда было интересно писать и разрабатывать языки программирования. Конечно, довольно сложно найти работодателя, который позволит вам написать язык программирования как часть вашей работы. Поэтому я ищу «следующее лучшее».Я интересуюсь языками программирования. Какие области программирования хороши для меня?

Какие области программирования позволят мне получить некоторый опыт решения некоторых связанных проблем? Или какие виды работодателей, скорее всего, будут рассматривать всех моих маленьких переводчиков как подходящий опыт?

+6

Нужен ли миру другой язык программирования? –

+4

@Madi - Да, миру нужно больше языков программирования. Если, конечно, ваш аргумент заключается в том, что уже существует идеальный язык программирования (с которым я бы яростно не соглашался). –

+3

Тогда следующий вопрос: вы уверены, что * вы - парень, который создаст идеальный язык программирования? :) –

ответ

2

Я работал программистом в течение последних десяти лет. До этого я писал компиляторы (и сборщики, линкеры, отладчики и т. Д.) В течение 20 лет.

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

Сегодня я играю с компилятором сбоку: http://ellcc.org. Это помогает мне поцарапать язык.

+0

Просто из любопытства, как вы превращаете каждую проблему в проблему синтаксического анализа? –

+1

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

4

Отсутствует. Основная часть профессионалов в этой области не разрабатывает языки для жизни, а перенастраивает существующие компиляторы к новым (обычно встроенным) целям или работает с системами преобразования source2source для устаревшего кода, создавая несколько языковых расширений в этом процессе.

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

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

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

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

  • Оставайтесь в школе и получите степень бакалавра (желательно, мастер или PHD) в CS.
  • присоединиться к команде разработчиков с открытым исходным кодом, которая работает над значительным проектом в этой области. gcc, но также и Java-мир, Tracemonkey (Mozilla), Mono и т. д. Подтверждаемый опыт в реальных сценариях очень важен.
+0

Я не обязательно не согласен с вами, но не каждая компания ищет крупномасштабные взносы. На самом деле, многие старшие стартапы предпочитают кого-то, кто может работать самостоятельно. Тем не менее, я вижу, что я мог потратить больше времени на работу над проектами * с другими людьми. –

+0

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

+0

Вы говорите, что степень говорит, что вы можете работать с другими людьми? Я не согласен. Вы можете работать с другими студентами, а не с людьми. –

3

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

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

7

Если ваш интерес к языковому дизайну неуемен, обратитесь к доктору философии. и сделайте это своей областью исследований. Вы можете рассчитывать на то, что академики будут поддерживать всевозможные убыточные действия.

+2

Но я не рекомендую это. Когнитивная свобода академических наук достигается только путем отказа от многих других свобод. (Я был математиком-профессором.) –

+0

Можете привести пример? Какие еще свободы? –

+1

Ну, попробуйте статью «Почему я не профессор» OR The Decline and Fall of the British University », углубленная публикация, написанная профессором, вышедшим в 1997 году, о том, как и почему академический климат в Великобритании университеты, потому что они стали более мрачными примерно с 1989 года (я ушел в 1989 году ... и рад, что я это сделал!) http://www.lambdassociates.org/blog/decline.htm – martinwguy

2

На самом деле, существует довольно много работ, связанных с визуальным программированием. Это не совсем традиционный язык программирования, поскольку мы его знаем, но в этом есть необходимость. Например, множество современных инструментов анализа данных основаны на инструментах визуального программирования (Pentaho). Вам не нужно слишком много искать, чтобы найти практическое применение визуального программирования.

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

1

Пребывание в академии. Если вы хотите разработать новый язык, ваши шансы на то, что вам платят за это, исчезающе мало. Более новые языки, как правило, являются выражением новой проблемной области, и вы только действительно сталкиваетесь с возможностью их развития, когда (а) новые проблемы являются частью декораций и (б) никто не обеспокоен необходимостью зарабатывать жить.

Пожалуйста, не торопитесь с этим. Говоря как разработчик работы, последнее, что мне нужно, это еще один взорванный язык, чтобы узнать :-)

1

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

2

Работодатель, имеющий богатый «домен» (т. Е. Сложную отрасль), может воспользоваться «доменным языком».

Знают ли они это? Вряд ли. Они будут слишком заперты в своем глубоком домене (и укоренились унаследованные системы), чтобы увидеть, что целевой язык может помочь разблокировать болото.

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

1

Большинство популярных в настоящее время языков вышли из гениального NEED, чтобы поцарапать конкретный ITCH. Python возник из-за того, что некоторые программисты, не связанные с C, нуждались в настройке входных данных своих программ и библиотек C. Lua вышел из НУЖД, чтобы внедрить язык сценариев в программы C. Erlang был создан для удовлетворения НУЖД 99,9999999% времени безотказной работы, загрузки горячего кода и высококонкурентного выполнения. Perl вышел из NEED, чтобы легко писать программы, которые анализировали текстовые файлы.

Так что очень простой вопрос, который задает любой работодатель, и вы должны спросить себя. Что НУЖНО, я могу предложить решение, которого не существует. Хобби-работа очень редко показывает, что вы предоставляете решения для НУЖД, большую часть времени она показывает, что вам нравится изобретать колесо ради того, чтобы изобретать колесо.

Смежные вопросы