Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Новый язык

51K
12 мая 2010 года
Pterox
33 / / 28.03.2010
Здравствуйте. Решил написать в этом разделе, т.к. лучше места не нашел).
Короче, подумываю создать свой язык для иерархического (:)) структурирования данных. Применять хочу в файлах конфигурации, аналоге реестра Windows, базах данных и т.п. Язык должен стать аналогом XML и других языков описывающих различные данные. Вот примерно так должен будет выглядеть файл, описывающий файл в папке, например:
Код:
0[Files]
  1[Example.asm] ; имя файла
    2[ExtenInfo]   ;расширенная информация о файле
      3[Long Name[]Example of Application.asm] ;параметр Long Name, [] значит что конечное значение Example of Application.asm - это текст
      .[Attributes[bin]01100010] ;параметр Attributes, [bin] значит что конечное значение 01100010 - это двоичное число
      .[Type[]ASM File] ; также, как и с Long Name
      .[Icon[file]Example.ico] ;файл с иконкой для Example.asm
      .[CheckSum[str]W#4-05f;v235c]
    2[Opening]   ;инфа для файловых оболочек
      3[OnOpen[]fasm.exe Example.asm Example.exe] ; после [] стоит командная строка, которая выполняется по двойному щелчку кнопки мыши
      .[OnContext[]Open=tinypad[]Compile=fasm.exe Example.asm Example.exe] это в контекстном меню


Собственно типы данных:
 
Код:
0[Data Types]
  1[Text[]This is Text] ;обычный текст    
  .[Decimal Number[dec]543] ;десятичное (вещественное) число
  .[Hex Number[hex]12DE3F] ;шестнадцатеричное число
  .[Hex Sequence[hseq]1A00AA10545DA31E34D0FF0 ; последовательность байт
  .[Binary Number[bin]0101010001] ;двоичное число
  .[Byte Stream[str]F3&44v=\+\\3dSSQQ]; последовательность байт, представленная в виде текста (как в MIME)
  .[File[file]/rd/1/config/autorun.cfk]; ссылка на файл конфигурации, работает наподобие асм-директивы include
  .[Link[lnk]/Data Types/Text/Text] ;ссылка на параметр в этом файле, или в файле, который связан директивой [file], при запросе параметра, выдаст This is Text

Понятно, что все это похоже на полную чушь и/или на китайскую грамоту, но может кто-нибудь посоветует, как улучшить синтаксис и удобочитаемость кода? Заранее спасибо)
307
12 мая 2010 года
Artem_3A
863 / / 11.04.2008
а зачем? xml типа лажа или хотите увековечить свое имя в истории? чем ваша поделка будет отличаться от xml? ИМХО пахнет тут велоспортом, и я бы даже сказал воняет!
412
12 мая 2010 года
grgdvo
323 / / 04.07.2007
А Вы не пробовали записать Ваши данные в XML? Может быть тогда и задача создания нового языка, а за ним и разборщика этого языка отпадет сама собой. Для XML уже все сделано, зачем новый велосипед?

Пока писал эти строчки, уже ответить успели ;)
51K
12 мая 2010 года
Pterox
33 / / 28.03.2010
Почему новый велосипед? Вот почему
87
12 мая 2010 года
Kogrom
2.7K / / 02.02.2008
Цитата: Pterox

Короче, подумываю создать свой язык для иерархического (:)) структурирования данных.



Это приветствуется, но надо какое-то вступление, некое разъяснение, какие недостатки XML, YAML, JSON и т.д. будут устранены в новом языке, чем он будет лучше их.

307
12 мая 2010 года
Artem_3A
863 / / 11.04.2008
Цитата: Pterox
Почему новый велосипед? Вот почему



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

51K
12 мая 2010 года
Pterox
33 / / 28.03.2010
Цитата: Kogrom
Это приветствуется, но надо какое-то вступление, некое разъяснение, какие недостатки XML, YAML, JSON и т.д. будут устранены в новом языке, чем он будет лучше их.


Ну во-первых, это избыточность в XML, в X языке избыточность будет меньше, во-вторых парсер под мой язык будет легче сделать, чем для XML (а операционная система, для которой я его собираюсь сделать, вообще не имеет XML-парсеров и библиотек для работы с XML, поэтому, IMHO, легче сделать с нуля библиотеку для чтения/изменения данных для моего языка, т.к. машина язык X будет быстрее и легче обрабатывать, нежели другие), ну и в-третьих охота выпендрится :D

87
12 мая 2010 года
Kogrom
2.7K / / 02.02.2008
Цитата: Pterox
Ну во-первых, это избыточность в XML


Так это про XML. А чем он лучше YAML будет? И других подобных языков?

Цитата: Pterox
а операционная система, для которой я его собираюсь сделать, вообще не имеет XML-парсеров и библиотек для работы с XML


Про это не было сказано. Делайте поддержку стандартного Си, и всё будет. А может у вас уже есть аналог gcc.

Цитата: Pterox
ну и в-третьих охота выпендрится :D



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

307
12 мая 2010 года
Artem_3A
863 / / 11.04.2008
Цитата: Pterox
а операционная система, для которой я его собираюсь сделать, вообще не имеет XML-парсеров и библиотек для работы с XML...



ааа... и дайте угадаю, ось тоже вашего пера, психиатра подсказать??? ну или дос в противном случае тогда!

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

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

ЗЫ:

Цитата: Pterox
в X языке избыточность будет меньше



голословное утверждение. докажите!

ЗЫЗЫ: а вообще вся затея напоминает это. ознакомьтесь.

51K
12 мая 2010 года
Pterox
33 / / 28.03.2010
Цитата: Artem_3A
ааа... и дайте угадаю, ось тоже вашего пера, психиатра подсказать??? ну или дос в противном случае тогда!


Нет ось не моего производства, ось эта - KolibriOS.

307
12 мая 2010 года
Artem_3A
863 / / 11.04.2008
Цитата: Pterox
Нет ось не моего производства, ось эта - KolibriOS.



психиатра точно не надо???:D

63
12 мая 2010 года
Zorkus
2.6K / / 04.11.2006
Тролли нынче не те что были. Или боты еще не доросли чтобы троллить качественно.
1
12 мая 2010 года
kot_
7.3K / / 20.01.2000
Тролль нынче не торт.
87
12 мая 2010 года
Kogrom
2.7K / / 02.02.2008
Цитата: Zorkus
Тролли нынче не те что были.



Просто я сейчас делом занят, нет времени развернуться во всю мощь, как прежде... А Artem_3A ещё не прокачался, поэтому только толсто может. Но я верю, что он научится менее прямолинейно троллить со временем.

6
12 мая 2010 года
George
4.1K / / 05.01.2007
Цитата: Kogrom
Просто я сейчас делом занят, нет времени развернуться во всю мощь, как прежде... А Artem_3A ещё не прокачался, поэтому только толсто может. Но я верю, что он научится менее прямолинейно троллить со временем.


А может лучше не надо фигней страдать?

9
12 мая 2010 года
Lerkin
3.0K / / 25.03.2003
А Pterox хорош. Ни разу не сорвался на "психиатра" и прочее... :D
303
12 мая 2010 года
makbeth
1.0K / / 25.11.2004
Ну вот... только попкорном запасся.. Набижали тут всякие :(
87
12 мая 2010 года
Kogrom
2.7K / / 02.02.2008
Цитата: George
А может лучше не надо фигней страдать?


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

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

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

Или вообще, если кого-то интересует теория синтаксического анализа, то тоже можно так играться.

1.8K
13 мая 2010 года
LM(AL/M)
332 / / 20.12.2005
по-моему автору было бы логичнее написать для этой оси парсер какого нибудь стандартного формата которого ещё не написали, чем изобретать новый язык, который никто использовать не будет; если не нравится xml, можно взять что нибудь попроще
51K
13 мая 2010 года
Pterox
33 / / 28.03.2010
Всем спасибо за помощь и за троллинг :D
6
13 мая 2010 года
George
4.1K / / 05.01.2007
Цитата: Kogrom
Как я вижу? Пришёл энтузиаст, который хочет создать свой язык, просит совета. Зачем на него грубо наезжать? Можно дать ссылки на технологии, другие языки, может книжки, чтобы он сам мог понять, нужен ли этот язык.

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

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

Или вообще, если кого-то интересует теория синтаксического анализа, то тоже можно так играться.


Ну подсказать и посоветовать != затроллить (в любом виде).
Да че то правда, троллинг во всех его проявлениях достал, не?
Pterox'у респект за терпение. Ну и за целеустремленность, пожалуй.

51K
30 мая 2010 года
Pterox
33 / / 28.03.2010
Новая концепция и синтаксис моего языка (С) :D. На примере описания 3D-объекта:
Код:
[Object]
{
   [Position]
   {
      [X]=[543];
      [Y]=[678];
      [Z]=[0];
      [Type]=[Global];
   }
   [Orientation]
   {
      [X]=[rad[3.14];                ///префикс rad - радианы
      [Y]=[rad[0];
      [Z]=[rad[1.376];
      [Type]=[Global];
   }
   [Def Color]=[h[0F0F0F];        /// префикс h означает что это hex-число
   [Enabled]=[bool[1];              /// bool означает bool =)
   [X-Ray]=[bool[0];
   [Texture]
   {
      [Stream]=[FD3Scr*$wd&@V#vrKNvrdf!13_d6we...];              ///бинарная посдеовательность представленная как текст (как в base64)
      [X Offset]=[%[02];
      [Y Offset]=[%[50];                          ///%, как вы догадались, - проценты
      [Projection]=[UVW];
     ...
   }
   [Tags]4]=[Sphere][Сфера][Шар][Globe];  /// массив из четырех строк
   [Fixing]=[bool[0]
   {
      [Fixing Point]
      {
         [X]=[ref[../Position/X];                   ///ссылка на  значение координаты Position.X
         [Y]=[ref[X];                                 ///равно [X]
         [Z]=[sysval[Random];                    ///координату Z определяет системный генератор псевдослучайных чисел
      }
   }
}

Конечно, я привел этот вариант только для примера, тегов там должно быть куда больше. Вот примерно такой язык будет. Конечно синтаксис не блещет оригинальностью (в отличие от предыдущего :D), но зато интуитивно понятен и прост для редактирования. При этом в файле написаном на ©®Моем Языке©® :) можно хранить хоть какие данные (даже сжатые), название тегов могут быть какие угодные (лишь бы не было управляющих символов {}[]), и при этом присутсвуют дополнительные прибамбасы. В общем, блэкджек и шлюхи обещаются :D А еще открытая спецификация, гы.
5
30 мая 2010 года
hardcase
4.5K / / 09.08.2005
А зачем так много квадратных скобок и чем это лучше XML?
51K
30 мая 2010 года
Pterox
33 / / 28.03.2010
Ну, во-первых, этот язык менее избыточен, чем XML. Во-вторых в нем будет реализована модульность, т.е. каждый файл может иметь ссылки на другие и парсер будет рассматривать их как один файл, но только когда это ему нужно. В-третьих это не язык который супермегакруче чем XML, это будет универсальный язык описания данных, который можно рассматривать как альтернативу существующим языкам.
307
30 мая 2010 года
Artem_3A
863 / / 11.04.2008
Ну копать-копать... Все голословно!=\ Лично для меня на вид это просто что то монстроподобное, неповоротливое! Префиксы, массивы, модули... ну йо майо, будут ли этим пользоваться? Нельзя реализовать все желания и потребности!... И собственно, ты парсер реализовал уже? При всей твоей придуманной фигне парсер будет таким же монстроподобным и скорее всего тормозным! Следуй принципу кизз(т.е. оставь простым, дурачок). Простота - залог успеха.:D
5
30 мая 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: Pterox
Ну, во-первых, этот язык менее избыточен, чем XML. Во-вторых в нем будет реализована модульность, т.е. каждый файл может иметь ссылки на другие и парсер будет рассматривать их как один файл, но только когда это ему нужно.

А зачем модульность в языке описания данных?

241
31 мая 2010 года
Sanila_san
1.6K / / 07.06.2005
За терпение и выдержку автору, конечно, респект и уважуха; а за вылысыпыдызм - таки низачот.:)

Незачем заморачиваться с изобретением ещё одного YAML, вполне достаточно замутить просто расширение YAML под какую-то конкретную задачу (если таковая наличествует), а если задачи нет - то просто замутить парсер YAML и не париться. Устройство языка - поймёте, устройство парсера - поймёте, парсер - сделаете, продукт не только открытый, но и общепринятый, а это - уверяю вас! - гораздо важнее.

Простой пример: Adobe Photoshop - продукт по большей части закрытый, но чертовски общепринятый, буквально что промышленный стандарт. Свой круг задач этот продукт решает как никакой другой. И решительно никого не волнует проприетарная лицензия, копирайты и прочая муть.

Писать велосипеды - само по себе не зло. Это плохо вот почему: вы тратите время на делание того, что уже сделано, приобретая по сути мёртвые навыки и знания. Придумав свой язык, вы не сможете его использовать, потому что даже если он лучше XML, он точно не лучше JSON/YAML, а значит шансы использовать такой язык кем-то кроме вас невелики. Между тем, вся наша (и ваша) работа строится вокруг ответа на вопрос "для чего?", и вы привлекательны (для пользователей вашего продукта) ровно настолько, насколько привлекателен ваш ответ на этот вопрос. И хотя разработкой "велосипеда" вы легко покажете, насколько вы крутой программист, но такая работа говорит и о том, насколько вы плохи и недальновидны как разработчик и проектировщик.

По этой же причине троллингу подвергается любая попытка сброситься умами и написать ОС под девизом "ибо винда достала" – ибо на самом же деле авторы такой идеи только потратят время, не сделав ничего.

Ну и вообще: пользователям не нужны стандарты и даже продукты, им нужно решение задач. Стандарты нужны продуктам, решающим задачи, но не более того.
87
31 мая 2010 года
Kogrom
2.7K / / 02.02.2008
Цитата: Pterox
Конечно синтаксис не блещет оригинальностью (в отличие от предыдущего :D), но зато интуитивно понятен и прост для редактирования.



Можно ещё проще, если отступы имеют значение для парсера ;) :

Код:
class Object:

    class Position:
        X = 543
        Y = 678
        Z = 0
        Type = Global
       
    class Orientation:

        X = rad(3.14)                # функция rad - радианы
        Y = rad(0)
        Z = rad(1.376)
        Type = Global

    Def Color = 0x0F0F0F        
    Enabled = True              
    X-Ray = False
   
    class Texture:

        Stream = bynary("FD3Scr*$wd&@V#vrKNvrdf!13_d6we...")   # бинарная посдеовательность представленная как текст
        X_Offset = per_cent(2)
        Y_Offset = per_cent(50)             # %, как вы догадались, - проценты
        Projection = "UVW"

    Tags = ["Sphere", "Сфера", "Шар", "Globe"]  # массив из четырех строк
    Fixing = False
   
    # дальше не распарсил, ибо потеряна квадратная скобка...


Кстати, у меня есть парсер для такого формата. Правда, делал не я.
5
31 мая 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: Kogrom
Кстати, у меня есть парсер для такого формата. Правда, делал не я.


У меня тоже, но я к нему руки таки приложил и продолжаю прикладывать. :D

303
01 июня 2010 года
makbeth
1.0K / / 25.11.2004
hardcase, изверг! почто рукоприкладством занимаешься? :D
51K
01 июня 2010 года
Pterox
33 / / 28.03.2010
Цитата:
Можно ещё проще, если отступы имеют значение для парсера


а что, если текстовый редактор с этими отступами накосячит при сохранении и редактировании (удалит, например)? да и при большом количестве вложенных class'ов работать с этим файлом будет не совсем удобно (большая длина строк)

Цитата:
X = rad(3.14)


а если я захочу написать rad(3.14) как текст? конечно программа может и сама определить тип, но если это сразу будет делать парсер, имхо, скорость выполнения увеличится

З.Ы. Также в моём языке можно будет использовать безымянные элементы:

 
Код:
[Root]
{
   =[Text];
   =[h[0x4434];
   =[b[01010010100];
   =[lnk[/0];
}
399
01 июня 2010 года
KIV
432 / / 20.01.2009
Цитата:
а что, если текстовый редактор с этими отступами накосячит при сохранении и редактировании (удалит, например)?


Или заменит на пробелы.

Цитата:
а если я захочу написать rad(3.14) как текст?


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

87
01 июня 2010 года
Kogrom
2.7K / / 02.02.2008
Цитата: Pterox
а что, если текстовый редактор с этими отступами накосячит при сохранении и редактировании (удалит, например)? да и при большом количестве вложенных class'ов работать с этим файлом будет не совсем удобно (большая длина строк)


Нормально всё. Куча людей используют этот формат:
http://ru.wikipedia.org/wiki/Python
или даже просто
http://python.org/

Большое количество вложенных классов в любом случае неудобно смотреть. Поэтому можно предусмотреть ещё и объекты.

Цитата: KIV
Или заменит на пробелы.



Лучше использовать 4 пробела вместо таба. Или 2, если предполагается, что текст будет распечатан.

241
01 июня 2010 года
Sanila_san
1.6K / / 07.06.2005
Пробелы однозначно лучше таба, потому что их проще и удобнее сделать явно.

[QUOTE=Pterox]да и при большом количестве вложенных class'ов работать с этим файлом будет не совсем удобно (большая длина строк)[/QUOTE]А какая необходимость вкладывать много классов друг в друга? Кстати, существуют ещё пространства имён. Правда, это больше относится не ко вложениям классов, а к наследованию, но лично мне большое количество вложенных классов говорит о не очень хорошем проектировании структуры данных. Или я неправ?

Ах да. Есть же директива #include, разве не поможет она с проблемой глубокой вложенности?
51K
19 августа 2010 года
Pterox
33 / / 28.03.2010
Таки мой язык ещё не умер :D. Я опять его переделал с нуля и получилось нечто, соответсвующее принципам KISS, но при этом достаточно мощное. Он чем-то похож на язык INI-файлов, но при этом он иерархический, относительно расширяемый и прост для парсинга (к примеру кол-во зарезервированных символов - 3). Также поддерживается Unicode. Код компактнее чем в XML, а редактировать и просматривать его, на мой взгляд, одно удовольствие.
5
19 августа 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: Pterox
иерархический, относительно расширяемый и прост для парсинга (к примеру кол-во зарезервированных символов - 3).


LISP снова переизобретен?

51K
19 августа 2010 года
Pterox
33 / / 28.03.2010
Цитата: hardcase
LISP снова переизобретен?


Да, быть может это так :D:D

51K
19 августа 2010 года
Pterox
33 / / 28.03.2010
Хотя, это всё шутки. Lisp - это язык программировая, когда мой язык всего лишь язык описания данных.
5
19 августа 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: Pterox
Хотя, это всё шутки. Lisp - это язык программировая, когда мой язык всего лишь язык описания данных.


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

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог