JavaScript fwdays conf: Node.js, Performance, Tests, Nuxt.js, DevTools, GraphQL | March 14
×Закрыть

Новый язык программирования

Здравствуйте.

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

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

Во-вторых, упреждая вопрос «зачем», отвечаю: в экспериментальных целях.

Итак. Язык — псевдообъектный. Существует заранее определенный набор псевдоклассов, например, «functions», «types» и др., вызывая методы которых, создаются новые объекты с каким-то набором встроенных методов. Например,

functions.new: «Main»

Эта конструкция вернет новоиспеченный объект Main, типа «функция».

functions.new: "Main".param: "Name«.type: types. «int»

Каждый последующий доступ (оператор точка — «.» ) возвращает тип родителя. То есть в вышеизложенной конструкции вначале получаем объект «функция», из нее — объект «параметр функции», из него получаем доступ «тип» и т.д.

Простите, в терминологии путаюсь, не работал с ООП)

Короче говоря, вот так вот.

LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Ну как, взлетел?
Как зовётся?


Хочу написть комплятор какого-нибудь языка. «Какого-нибудь», ограничено тем, что наиболее распространенные ныне существующие языки за время своего эволюционирования обрасли... хм... функциональностью. Реализовать такое — чертовски сложно, если вообще возможно одному человеку.

Вариант — компилятор для своего языка программирования. Но, как я ни пытался придумать чего-нибудь хорошего, в силу инерционности мышления (ну нет ничего лучше Си:) оригинального ничего не придумывалось.

Возможно, если кажется, «что нет ничего лучше Си», есть смысл посмотреть немного шире на языки программирования. Например обратите внимание на http://www.oberon.ethz.ch/, или к примеру http://www.modula2.org/. Или вот интересный вариант http://www.xs4all.nl/~jmvdveer/algol.html — классический академический язык программирования. Удачи.

Если охота поексперементировать с языковыми конструкциями берите сразу www.jetbrains.com/mps и не партись.

Новый язык сходу придумывать не обязательно.

компилятор писать не надо, проще написать транслятор и преобразовать программу на вашем новом языке в Java или C# или что-то еще проверенное и популярное. А после преобразования просто скомпилировать ее как обычно и выполнять.

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

TheVoid, придуманная вами модель давно существует под понятием reflective programming, как разновидность метапрограммирования, и реализована не как язык, а как свойство языка. Скажем, в.NET существует целое пространство имен, отвечающее за операции с метаобъектами, метаметодами и тд. Более того, в спецификации UML давно предусмотрено определение метаобъектов.

functions (.new: «MyFunction» (.param: «Param1» (.type: types. «int» ) .param: «Param2» (.type: types. «short» ) .rtype: (.type: types. «dword» ) )

меня, например, очень раздражает, когда объём кода больше объёма слов, которыми его можно описать
здесь слов больше чем «функция с тремя параметрами — целочисленным, 16-битовым целочисленным и 32-битовым целочисленным»,

а ещё так много раз встречающееся «type» похоже на избыточность


TheVoid 12 час. назад
Здравствуйте.
Собственно, пришла идея нового языка программирования, хочу узнать мнение общественности.
Во-первых, сразу скажу, что язык еще не продуман сколько-нибудь подробно. Если окажется, что идея плоха, то и не будет смысла в дальнейшем обдумывании.

Во-вторых, упреждая вопрос «зачем», отвечаю: в экспериментальных целях.

Диплом? Честно, желаю удачи. Что что вы сделаете кроме никому и нафиг не будет нужно, но пригодится в будущем для изучения подобных готовых технологий на-лету. А там и до «архитекта» недалеко.

Язык — псевдообъектный.

Простите, в терминологии путаюсь, не работал с ООП

Блин, это просто сразу хочется взять и запихать на демотивэйшен.

Допоки не навчитесь набиратись чогось на кшталт: www.google.com.ua/search client=opera& rls=uk& q=Ruby& sourceid=opera& ie=utf-8& oe=utf-8 — В ШКОЛУ!!!

2TheVoid

Вы не ответили на вопрос:

Чем такая запись лучше (если я правильно прочитал запись)

void Main (int Name) ?

Главное ответьте на него для себя.

... хм...

Проектирование языка — это хорошая инженерная задача. Повторюсь учите теорию языков.

Хочу написть комплятор какого-нибудь языка

Реализовать такое — чертовски сложно

Да чертовски сложно. Возьмите подмножество языка. Например, чисты C или Pascal, уберите структуры, юнионы может что-то еще. Это задача вполне посильная, у меня даже была такая курсовая работа, ничего сверхъестественного там нет.

Друк, ты так явно в теории плаваешь, что тебе бы пару лет умные книжки почитать перед тем как языки придумывать (особено «ну нет ничего лучше Си.», это пять)

Но если все таки так чешется то даю подвсказку: Схема r5rs (можно для начала без континюэйшнов и оптимизации хвостовых вызовов), Оберон1. Стандарты на них размером всего пару десятков страниц, может асилиш.

Нет, не путаю. Мысль дала осечку, отвлекся на что-то другое, вот так и получилось, что вместо JavaScript написал просто — Джава.
Как бы то ни было.
Хочу написть комплятор какого-нибудь языка. «Какого-нибудь», ограничено тем, что наиболее распространенные ныне существующие языки за время своего эволюционирования обрасли... хм... функциональностью. Реализовать такое — чертовски сложно, если вообще возможно одному человеку.
Вариант — компилятор для своего языка программирования. Но, как я ни пытался придумать чего-нибудь хорошего, в силу инерционности мышления (ну нет ничего лучше Си:) оригинального ничего не придумывалось. К тому же, в Делфи есть такая штука, как импортирование функций из Длл — вот это и хотелось бы включить в язык. И так, чтобы стиль записи не был противоречивым (смешать подобное с функциями Си — уродство). Вот.
На вопросы
Полное описание функции выглядит так:
functions (.new: «MyFunction» (.param: «Param1» (.type: types. «int» ) .param: «Param2» (.type: types. «short» ) .rtype: (.type: types. «dword» )
)
Ну и там где-то следует body.

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

2TheVoid

Ну, Джава — это сриптовый язык.

Учитывает что вы путаете Java и JavaScript, вам бы подучится (хоть основы), а уже потом придумывать новые языки.

Во-вторых, упреждая вопрос «зачем», отвечаю: в экспериментальных целях.

Можно перефразировать вопрос: «В чем данный язык будет лучше чем какой-то другой? ». Если это просто ради интереса, то учите теорию языков (у разных источниках названия могут отличатся) и вперед.

functions.new: «Main».param: «Name».type: types. «int»

Чем такая запись лучше (если я правильно прочитал запись)

void Main(int Name)

?
Как передать функции несколько параметров (если я правильно понял идею, то это не возможно)?
Как получить возвращаемое значение у функции? И его тип?

Как описать собственно тело функции?

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

Ну, Джава — это сриптовый язык. Здесь идет речь о прикладном, может быть, с уклоном в системный. Не такой монстроуозный, как Си++.

ОТветь на один вопрос: зачем это нужно вообще? Т.е. чем твой язык будет лучше существующих? Что касается объектных языков (не объектно ориентированных) такие уже есть. Тот — же JavaScript

а какие проблемы это решит? какие преимущества даст?

Подписаться на комментарии