OSDev
http://osdev.su/

Беседа о создании нового языка программирования
http://osdev.su/viewtopic.php?f=18&t=1026
Страница 28 из 29

Автор:  Yoda [ 19 фев 2015, 22:08 ]
Заголовок сообщения:  Re: Беседа о создании нового языка программирования

Юрий писал(а):
Конечно, это решается, и решается очень просто. Но возникает вопрос: а должны ли мы так делать? Разве конструкция char x[] = "*/"; в чём-то неправильна?

Да всё правильно. Речь о том, что подобные ситуации должны иметь какое-то решение. Я предложил совершенно нормальное решение. Если у вас есть альтернативный вариант, - с удовольствием выслушаю.

Юрий писал(а):
Или в угоду возможности закомментривать код мы должны этот код править?

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

Юрий писал(а):
Да нет, мы должны иметь возможность закомментировать любой код.

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

Юрий писал(а):
Но Сишные комментарии не могут быть вложенными по определению.

По какому определению? Стандарт, - да, запрещает вложенные комментарии, но многие компиляторы разрешают вложенные комментарии при помощи соответствующих опций, и это без проблем всегда работало. В TurboC/C++ я этим постоянно пользовался.

Юрий писал(а):
Я же веду речь о невозможности использования длинного скобочного комментария в качестве вложенного.

Что такое "длинный скобочный комментарий"? И почему невозможно их вложение?

Юрий писал(а):
а что, если «нерабочий код» содержит синтаксическую ошибку?

И что?

Юрий писал(а):
Кстати, почему-то на этом форуме не получается отправить личное сообщение

Мне приходят ЛС от других пользователей. Завтра посмотрю с работы, что у вас там может быть.

Zealint писал(а):
Цитата:
Плюсы минусы существующих языков параллельного программирования

Таких как бы и нет вовсе.

Chapel.

Zealint писал(а):
Если мы хотим обсуждать достоинства и недостатки OpenMP и MPI, то здесь лучше открывать отдельную тему. Если кратко, то оба этих инструмента - бодяга.

Полностью согласен.

SII писал(а):
Смотря что понимать под параллельным программированием.

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

Автор:  rst256 [ 20 фев 2015, 00:30 ]
Заголовок сообщения:  Re: Беседа о создании нового языка программирования

Да отдельная ветка "Параллельные вычисления" не помешала бы.
А то хотел вернуться к вопросу выбора ОС для таких целей, но это не менее отдельная тема чем все остальные.

Автор:  SII [ 20 фев 2015, 03:04 ]
Заголовок сообщения:  Re: Беседа о создании нового языка программирования

Yoda писал(а):
Возможностью запуска потоков сейчас даже обычный С не удивить.


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

Автор:  Freeman [ 05 мар 2015, 23:05 ]
Заголовок сообщения:  Re: Беседа о создании нового языка программирования

Раз такое дело, решил чуток отписаться.

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

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

Автор:  iz56 [ 05 мар 2015, 23:42 ]
Заголовок сообщения:  Re: Беседа о создании нового языка программирования

С полгода как использую блочные комментарии на фасм. Только они называются по недоразумению макросами. А так - очень классная вещь - удобно быстро организовывать варианты кода и переключаться межу ними. Не сам додумался - какая-то книга аля совершенный код ,только по проще. Я её не осилил - но про вариантные гнёзда (цитата) - запомнил.

Автор:  Yoda [ 06 мар 2015, 11:47 ]
Заголовок сообщения:  Re: Беседа о создании нового языка программирования

Freeman писал(а):
Строчные комментарии ведь строчны -- конец строки является естественным неотключаемым концом комментария, и он перебивает остальные правила.

Вероятно, вы будете несколько удивлены, но попробуйте скомпилировать и запустить следующий код:
Код:
#include <stdio.h>

int __cdecl main (void) {
  int a=0;
  // Here is single line comment!\
  ++a;
  printf ("a = %d\n", a);
}

Автор:  Freeman [ 06 мар 2015, 13:04 ]
Заголовок сообщения:  Re: Беседа о создании нового языка программирования

А, ну это ваши сишные заморочки. Оператор ++a, следующий за комментарием, не скомпилируется, да? Сишного компилятора под рукой нет, есть только Delphi. :lol:

Это как раз пример плохого дизайна. Если в языке потоковый синтаксис -- он должен быть всегда потоковым, на то ему и точки с запятой даны. А если "тут играем, тут не играем, тут рыбу заворачивали" -- так и будет. Злорадствовать не буду, просто примите к сведению, что со стороны видней.

Автор:  iz56 [ 06 мар 2015, 18:06 ]
Заголовок сообщения:  Re: Беседа о создании нового языка программирования

Код:
 warning #1063: Single-line comment contains escaped new-line.

Автор:  SII [ 06 мар 2015, 19:02 ]
Заголовок сообщения:  Re: Беседа о создании нового языка программирования

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

Автор:  SII [ 07 окт 2015, 02:10 ]
Заголовок сообщения:  Re: Беседа о создании нового языка программирования

Вопрос-предложение к Йоде и к прочим языкоизобретателям :)

В довольно значительном количестве серьёзных инструментальных... хм... скажем, библиотек (например, Qt и Unreal Engline) для Це++ широко используются специальные макросы в комбинации с внешними средствами обработки исходного текста программы (метаобъектный компилятор в Qt, например). Эти хаки разной степени грязности преследуют две цели:

- дать доступ к определённым полям экземпляров классов из программ внешнего редактирования (настройка значений свойств объектов не в коде на Це++, а внешними средствами, что, понятное дело, много удобней и быстрей -- создание той же гуйни, расположение неписей на уровне игры и т.д. и т.п.);

- как бы расширить возможности языка, не заставляя программиста писать каждый раз примерно один и тот же код (например, загрузка и сохранение значений свойств объектов из внешнего файла).

В Дельфях эта задача частично решена благодаря двум вещам:

- наличию у тамошних классов не только "низкоуровневых" полей (обычных переменных, по сути), но и свойств (ключевое слово property; с точки зрения программиста, использующего свойство, он обращается к нему как к обычному полю класса, но в реальности это может быть и обращение к полю, и вызов специального метода; в Це++ подобного нет, и поэтому там приходится использовать явные методы типа GetValue и SetValue, что загромождает исходный текст программы, да и менее удобно);

- наличию области видимости published (тот же public, но известный не только внутри самой программы, но и за её пределами; все свойства, которые можно редактировать в дельфозной ИДЕ, являются именно опубликованными).

Мне кажется, что подобные средства должны быть в приличном современном языке. Однако они всё же ограничены; например, в Дельфях невозможно сделать автоматическую сериализацию определённых свойств объектов (нет, в принципе, это возможно -- но только написанием внешнего дополнительного компилятора, управляемого особыми комментариями подобно макросам в Це++, а это не шибко элегантно и т.д. и т.п.). Ну а отсюда, собственно, вопрос: не задумывались ли, можно ли подобную задачу реализовать чисто средствами самого языка?

Страница 28 из 29 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/