Pull to refresh

Ликвидатор велосипедов, часть 3: языки программирования

Reading time4 min
Views2.7K
Вообще говоря, речь пойдет о разработке компиляторов не Just for fun, а для каких-либо проектов. Это могут быть проекты для внутреннего использования, или может быть это будут проекты, которые направлены на продажу. А может быть, на самововлечение сообщества для последующего доения этого сообщества. Я не буду разбирать причины, по которым может показаться, что создание нового языка программирования выведет компанию на новый уровень, однако причины находятся, языки пишутся, создавая, на мой взгляд, огромные проблемы, как самой компании, так и сотрудникам этой компании.

Ссылка на первую часть серии: оконные системы
Ссылка на вторую часть серии: построение графиков


Во-первых, разработка собственного языка программирования может начаться, просто потому что автору кажется, что этот язык (для кого-то, а в идеале – для всех) будет лучше остальных. Ну, мы-то с вами понимаем, что в 99,9% случаев эта идея утопична.

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

Также вполне часто-встречаема ситуация, когда есть разработчик, который хочет увековечить себя в компании и делает все что может, лишь бы быть не заменимым… Свой компилятор, своя операционная система, свои драйвера, приблуды командной строки… Чтобы справка обозначалась на знаком вопроса а комбинацией Ctrl+Alt+LOLS. Короче говоря, чтобы никто кроме него самого здесь понять ничего не мог. Тогда-то его будут ценить, повышать зарплату. Ведь никто не захочет вкладывать деньги в процесс переделки того что уже есть.

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

Откровенные минусы такого подхода:
  1. Вместо того чтобы потратить неделю на поиски и 3 недели на изучение, компания тратит года на разработку и сопровождение компилятора и сопутствующего ПО;
  2. Невозможно найти высококвалифицированных работников под язык, который нигде больше не используют;
  3. Персонал, который все таки нанимается, не получает опыта. Это люди, которые теряют навыки. Если человек до этого писал на платформе .NET, то через некоторое время он забудет библиотеки, а потом и сам язык C#.

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

Самым универсальным способом использовать современные технологии в своих устройствах будет либо ручная сборка, либо поиск готового решения операционной системы Linux. В общем, наверное, я не вижу смысла брать что-то еще. В этой системе у вас будет все, что надо для жизни. В качестве среды разработки может выступить любая IDE (например, Eclipse SDK). Отладку можно проводить через JTAG. Поддерживаются практически все процессоры, которые есть в мире. Компилятор GCC даст возможность писать на C/C++ под любой из этих процессоров программное обеспечение для вашего устройства. Также вы можете писать под любое устройство, используя язык программирования C#. А вместе с ним – все библиотеки фреймворка. Единственное – может быть вам придется добавить немного памяти на устройство. Задачу можно осуществить при помощи проекта Mono. Помимо экзотичного на Linux C#, вы можете использовать более традиционные языки, благо под Linux имеется их богатая поддержка.

Помимо Linux на железо прекрасно ставится Java (J2ME) и Windows CE, но с этим вопросом я знаком слабо, советую почитать соответствующую литературу.

Если говорить о разработке нового языка программирования в рамках какого-либо десктопного приложения, то это, на мой взгляд, оправдано только если язык направлен на узко-квалифицированных специалистов, и такого языка еще не было. Если вы создаете программный продукт, уступающий по функционалу существующим аналогам, например, хотите составить конкуренцию MathCAD или MetaTrader 4, то лучший путь здесь – либо поддержать их языки программирования, либо поддержать любой из существующих языков программирования. Поскольку разработка компиляторов, оснащения языка богатым инструментарием, отладка полученного кода займет столько времени, что вы просто проедите весь существующий бюджет, и у вас ни на что не останется денег. А, поверьте, вы должны будете сделать еще и конкурирующий продукт. Причем так его сделать, чтобы пользователь поверил вам что его стоит покупать и использовать.

Как быстро составить конкуренцию торговой платформе?
  1. В ядре — TPL, DLR, MEF
  2. Плагинная модель — MEF, конфигурация на XML
  3. Оконная модель — см часть 1
  4. Графики — см часть 2
  5. Окно редактирования кода скрипта — SharpDevelop 3.X — там можно выцепить и редактор и отладчик и компиляцию.
  6. Язык программирования — C#, VB.NET, IronPython, IronRuby, любой .NET — совместимый.

Поверьте, этого вам хватит для сверхбыстрого старта. Сервер пишем на C# под любую свободную или платную БД. В итоге получаем быстро разработанный продукт, сокращенные как минимум на год сроки разработки и автоматическую поддержку сообщества, знающих те языки программирования, которые вы выбрали в качестве скриптовых для вашей платформы. Если вы все-таки решили написать свой велосипед, такой автоматической поддержки у вас не будет. Здесь вы сами себе враг.
Tags:
Hubs:
Total votes 17: ↑10 and ↓7+3
Comments15

Articles