Re[8]: Как запустить Блэкбокс и выполнить первую программу
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.11.04 13:53
Оценка:
Здравствуйте, Kh_Oleg, Вы писали:

K_O>Что-то ты склонен все сильно упрощать. Я не говорю, что при конструкции end; невозможно показать все ошибки, я имел ввиду то, что при конструкции end ProcName; компилятор можно сделать проще при тех же возможностях по обнаружению ошибок.


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

K_O>Кстати, и мне как программисту удобнее было бы видеть окончание процедуры как end ProcName; потому как тогда проще обнаружить лишний или недостающий end;


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

Однако современные среды решают этот вопрос очень хорошо. В той же Студии есть автоматическое выравнивание, возможность отслеживания скобок (для С-подобных языков) и средства рефакторинга. В результате потребность в подобных вещах в общем-то отпадает.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: Как запустить Блэкбокс и выполнить первую программу
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.11.04 13:53
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Ищи Яндексом, он учитывает морфологию русского языка, чего Google делать не умеет.


Да гугль вроде тоже учитвывает. Да и в Яндексе 53 ссылки. Явно не общепринятая терминология. По крайней мере в тех книжках по компиляторах что читал я такой терминалогии не встречалось.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: Как запустить Блэкбокс и выполнить первую программу
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.11.04 13:53
Оценка: :)
Здравствуйте, TheBeard, Вы писали:

TB>Вы неправы. Просто большая часть доступной литературы — по-английски.

TB>Поищите словосочетание "operator precedence grammar" (именно в кавычках,
TB>чтобы отсечь "правила предшествования операторов"). Мне попадался
TB>русский перевод "грамматика с операторным предшествованием".

Возможно. В общем, это не важно.

TB>Такие

TB>грамматики "проще", чем LL(k) и упоминаются в любом серьёзном курсе
TB>конструирования компиляторов.

Я поглядел ту ссылку. Данный подход не пригоден для парсинга паскаля. Он, как я понял, рассчитан на парсинг выражений. Отсуюда и слово "оператор" в названии.

Ну, а учитывая что LL(1) регко реализуется рекурсивыным спуском и то что проблем в более сложных парсерах на сегодны нет, то вопрос об обработке ошибок в ЯП выглядит просто смешно.

ЗЫ

Кстати, эта реализация оберона выдает более чем одно сообщение об ошибке. Так что о чем речь не очень то ясно. Просто она своеобразно отображает ошибки (прямо в коде). Видимо это и сбивает.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: Как запустить Блэкбокс и выполнить первую программу
От: Кодт Россия  
Дата: 02.11.04 14:00
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Я поглядел ту ссылку. Данный подход не пригоден для парсинга паскаля. Он, как я понял, рассчитан на парсинг выражений. Отсуюда и слово "оператор" в названии.


Пригоден. Я знаю, так как сам писал "учебно-тренировочный" парсер Паскаля (то ли лаба, то ли курсовик по формальным языкам — уже не помню).
Перекуём баги на фичи!
Re[9]: Как запустить Блэкбокс и выполнить первую программу
От: Kh_Oleg  
Дата: 02.11.04 14:06
Оценка:
Здравствуйте, VladD2, Вы писали:

K_O>>Кстати, и мне как программисту удобнее было бы видеть окончание процедуры как end ProcName; потому как тогда проще обнаружить лишний или недостающий end;


VD>Скажем так, я согласен, что данное требование упростило бы чтение плохо отформатированного кода и кода с объемными конструкциями (написанного в плохом стиле).


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


То, что мы имеем умные среды — это очень хорошо и никто не спорит с тем, что эти фичи полезны и нужны. Но возлагать решение проблем языка на плечи среды — это не самый умный шаг. Язык следует проектировать так, чтобы программа на нем была читабельна в любом редакторе (я вот очень люблю в Far'e смотреть исходники) и никак не зависела от IDE.
Re[10]: Как запустить Блэкбокс и выполнить первую программу
От: Кодт Россия  
Дата: 02.11.04 14:21
Оценка: +1
Здравствуйте, Kh_Oleg, Вы писали:

K_O>То, что мы имеем умные среды — это очень хорошо и никто не спорит с тем, что эти фичи полезны и нужны. Но возлагать решение проблем языка на плечи среды — это не самый умный шаг. Язык следует проектировать так, чтобы программа на нем была читабельна в любом редакторе (я вот очень люблю в Far'e смотреть исходники) и никак не зависела от IDE.


Читабельность голого текста — это конечно, здорово. Но раскраска синтаксиса — существенно улучшает восприятие.
Поэтому эту фичу в виде плагинов добавляют в разные редакторы.
Перекуём баги на фичи!
Re[7]: Ответ на вопросы
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 02.11.04 14:41
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Сергей Губанов, Вы писали:


СГ>>Здравствуйте, VladD2, Вы писали:


VD>>>А можно услышать твое определение компонента и компонентного подхода в производистве ПО?


СГ>>Зачем мое?


VD>Понятно. Значит дать не можешь.


Как это не могу дать? Я же дал. Просто оно не лично мое, а общепринятое.

VD>Что до КОП == ООП — это большое заблуждение. На С++ можно легко писать в ОО-стиле, но очень трудно писать в компонентном стиле.


КОП представляет собой ряд ограничений наложенных на ООП при его слиянии с модульностью, т.е КОП — это подмножество ООП + модульность. Поскольку С++ не является модульным, то он и не может поддерживать КОП.
Re[8]: Как запустить Блэкбокс и выполнить первую программу
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 02.11.04 14:57
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ну, хорошо хоть так. Вы бы в своем дистрибютиве заменили что ли. А то совсем нелогично. А этой среде логики и так нехватает.


Да не мой это дистрибутив. Я уважаемого info21 знаю не сильно больше чем Вы. Один раз, правда, я присутствовал на его докладе по теоретической физике в институте физических проблем, когда еще сам физиком-теоретиком в РАН работал. Кстати, доклад был посвящен тому как он с помощью BlackBox-а написал мега-крутую программу для вычисления Фейнмановских интегралов в теории возмущений квантовой теории поля. На сколько я помню, аналогичная программа написанная на Mathematica работала в миллион раз медленнее. Ключевым моментом было именно наличие в Component Pascal сборщика мусора (так как требовалось очень интенсивно работать с динамическими структурами данных), а также того что компиляция идет в родной машинный код, а не в код виртуальной машины (в то время никаких C# еще не было).

------------------------

Кстати, заменять букву "K" на "C" — небезопасно, поскольку "C" может оказаться уже занятой. Ведь комбинация Ctrl+C / Ctrl+V обычно используется для Copy/Paste.
Re[8]: Clemens Alden Szyperski
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 03.11.04 10:22
Оценка:
СГ>Здравствуйте, serg_mo, Вы писали:

_>>Было бы неплохо ее получить. Ты бы хоть название ее сказал, можно было бы поискать.


СГ>Только что накопал микрософтовскую персональную страницу Шиперского:

СГ>http://www.research.microsoft.com/users/cszypers/
СГ>Там в разделе публикаций есть ссылка на ту статью, о которой я говорил:
СГ>

Component-oriented Programming: A refined variation on object-oriented programming. Clemens Szyperski. Oberon Tribune, 2:1, Oberon microsystems, Zurich, Switzerland. January 1996.

СГ>Прикол в том, что там дана таже самая битая ссылка!


Порылся у себя дома, нашел только бумажную распечатку статьи, электронной версии нет. Обратил внимание на дату: The Oberon Tribune, Vol 1, No 2, December 1995. А на сайте Шиперского дата January 1996. Странно, однако...
Re[9]: Как запустить Блэкбокс и выполнить первую программу
От: xvost Германия http://www.jetbrains.com/company/people/Pasynkov_Eugene.html
Дата: 03.11.04 11:18
Оценка:
Здравствуйте, VladD2, Вы писали:

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


Ага. То-то нас постоянно просят в РеШарпере добавлять после "}" фиктивный комментарий с указанием к чему эта скобка относится.....
С уважением, Евгений
JetBrains, Inc. "Develop with pleasure!"
Re[10]: Как запустить Блэкбокс и выполнить первую программу
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.11.04 14:13
Оценка:
Здравствуйте, xvost, Вы писали:

X>Ага. То-то нас постоянно просят в РеШарпере добавлять после "}" фиктивный комментарий с указанием к чему эта скобка относится.....


На rsdn вот никто подобного не просил. Может потому что любителей создавать многоэкранные методы со сложной структурой здесь нет?
... << RSDN@Home 1.1.4 beta 3 rev. 219>>
AVK Blog
Re[8]: Ответ на вопросы
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.11.04 22:06
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Как это не могу дать? Я же дал. Просто оно не лично мое, а общепринятое.


Ты свое дай. Своими словами и по русски. Ну, как ты его понимаешь сам.

VD>>Что до КОП == ООП — это большое заблуждение. На С++ можно легко писать в ОО-стиле, но очень трудно писать в компонентном стиле.


СГ>КОП представляет собой ряд ограничений наложенных на ООП при его слиянии с модульностью, т.е КОП — это подмножество ООП + модульность.


1. Часть никогда не может быть равна целому.
2. И в том, что КОП является ограниченным ООП ты тоже заблуждашся. Опять же в качесве примера приеду С++.

СГ> Поскольку С++ не является модульным, то он и не может поддерживать КОП.


1. СОМ создан на С++.
2. С++ не будучи модульным прекрасно поддерживает ООП. А по твоим словам КОП — это ограниченный ООП. Попробуй "ограничить" С++ и получить КОП. КОП — это другой подход.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Как запустить Блэкбокс и выполнить первую программу
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.11.04 22:06
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>написанная на Mathematica работала в миллион раз медленнее.


За-то написать на ней это было в миллиарды раз проще. А то что медленнее оно и понятно. Компилятор вс. специализированный мнтерпретатор. А Мусорщик тут вообще не причем. На голых плюсах можно организовать очень эффектиные алгоритмы заема/освобождения памяти. Мусорщик не дает выигрыша в скорости. Он снимает отвественность за контроль памяти.

СГ>------------------------


СГ>Кстати, заменять букву "K" на "C" — небезопасно, поскольку "C" может оказаться уже занятой. Ведь комбинация Ctrl+C / Ctrl+V обычно используется для Copy/Paste.


А почему было не сделать кау у всех нормальных людей — F5/F9? Я еще не видел ни одной IDE которая бы не запустила проект под отладку при нажатии одной из этих клавиш.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Как запустить Блэкбокс и выполнить первую программу
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.11.04 22:06
Оценка:
Здравствуйте, Kh_Oleg, Вы писали:

K_O>То, что мы имеем умные среды — это очень хорошо и никто не спорит с тем, что эти фичи полезны и нужны.


Гы. Еще как спорят.

K_O> Но возлагать решение проблем языка на плечи среды — это не самый умный шаг.


Это не проблемы языка. Это проблемы криворуких программистов. Русский язык тоже в общем-то не причем в том, что не все пишут калиграфически красиво.

K_O> Язык следует проектировать так, чтобы программа на нем была читабельна в любом редакторе (я вот очень люблю в Far'e смотреть исходники) и никак не зависела от IDE.


А я не люблю фар, но дело не в этом. Хорошо написанная прграмма даже на Перле, даже в ноотпэде будет выглядеть нормально и читаться боее менее сносно. А хреново написанная и на обероне (вренее даже на нем в первую очередь) будет просто никакая. Ну, и код с подсветкой синтаксиса опять же читается лучше чем без оного при любом языке. Ты вон тоже в фаре код смотришь. Нибусь из-за колоррера.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Как запустить Блэкбокс и выполнить первую программу
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.11.04 22:06
Оценка:
Здравствуйте, xvost, Вы писали:

X>Ага. То-то нас постоянно просят в РеШарпере добавлять после "}" фиктивный комментарий с указанием к чему эта скобка относится.....


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

Кстати, не поделитесь как вы вторглись в студийный комплит-ворд? А то я вот тоже хочу для R# ма сделать такой мета-коплит, а там нужно неделю (а то и месяц) прокапаться пока поймешь что к чему.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: Как запустить Блэкбокс и выполнить первую программу
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.11.04 22:06
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>На rsdn вот никто подобного не просил. Может потому что любителей создавать многоэкранные методы со сложной структурой здесь нет?


Да есть, к сожалению.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Как запустить Блэкбокс и выполнить первую программу
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.11.04 22:06
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Пригоден. Я знаю, так как сам писал "учебно-тренировочный" парсер Паскаля (то ли лаба, то ли курсовик по формальным языкам — уже не помню).


Интересно как? Там ведь явно написано безируется на приоретете операторов.

Плюс не вижу никакого выигрыша по срвнению с рекурсивным спуском.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: Как запустить Блэкбокс и выполнить первую программу
От: xvost Германия http://www.jetbrains.com/company/people/Pasynkov_Eugene.html
Дата: 04.11.04 07:19
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Кстати, не поделитесь как вы вторглись в студийный комплит-ворд? А то я вот тоже хочу для R# ма сделать такой мета-коплит, а там нужно неделю (а то и месяц) прокапаться пока поймешь что к чему.


Пошли в аську — 20520141. Либо по е-мейлу.
С уважением, Евгений
JetBrains, Inc. "Develop with pleasure!"
Re[9]: Ответ на вопросы
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 04.11.04 09:05
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Своими словами и по русски


ООП и Модульность — ортогональные понятия. Попытка соединить ООП и Модульность в одном флаконе, с неизбежностью приводят к появлению, того же самого COM или его аналогов. ООП может существовать само по себе, Модульность — тоже может существовать сама по себе, но чтобы они были вместе и одновременно — нужен COM или его аналоги, которые называются КОМПОНЕНТАМИ, а программирование в стиле ООП+Модульность называется Компонентно Ориентированным программированием — КОП. В тоже самое время в связке ООП+Модульность, само ООП не может остаться прежним, оно нуждается в некоторой модификации, а именно ОГРАНИЧЕНИИ. Вспомни что такое COM интерфейсы в терминологии С++ — это классы без членов-данных, а все члены-функции ВИРТУАЛЬНЫ. Другими словами, ограничение наложенное на ООП состоит в том, что МЕЖМОДУЛЬНОЕ наследование возможно только от АБСТРАКТНЫХ классов. С COM — все так в точности и обстоит, из DLL-лек мы можем импортировать именно только ИНТЕРФЕЙСЫ, а не сами классы — это ОГРАНИЧЕНИЕ НАЛОЖЕННОЕ НА ООП при его слиянии с МОДУЛЬНОСТЬЮ.


Если бы из DLL можно было бы импортировать не интерфейсы, а сами классы и от них наследоваться, то таким образом построенные системы не были бы МОДУЛЬНЫМИ — ведь в этом случае динамическая загрузка одного модуля (с определением какого-то класса) в память всегда должна была бы сопровождаться динамической загрузкой в память всех-всех-всех остальных модулей в которых находятся классы-предки того класса (загрузка в память класса обозначает загрузку в память всех-всех-всех классов предков). А в модульных системах такого безобразия быть не должно — там модуль загружается только тогда, когда вызывается какая-либо подпрограмма из этого модуля (т.е. простая декларация IMPORT StdLog; — еще не повод загрузить в память модуль StdLog, вот когда выполнение программы дойдет до точки StdLog.String("Здравствуй Мир!"); — вот тогда модуль StdLog будет загружен в память).
Re[10]: Как запустить Блэкбокс и выполнить первую программу
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 04.11.04 09:17
Оценка:
Здравствуйте, VladD2, Вы писали:

VD> На голых плюсах


А что не на ассемблере? Component Pascal для этого подходит лучше поскольку писать на нем можно гораздо быстрее и делать гораздо-перегораздо-переперегораздо меньшее количество ошибок, а самое главное — языку Component Pascal можно обучиться за неделю, а С++-су нужно обучаться несколько лет (Вы ведь не собираетесь предложить info21 — ведущему физику-теоретику, специалисту по квантовой теории поля приостановить свою науную деятельность на пару лет только для того чтобы освоить программирование на С++). На кой ляд использовать Си++? ПОВЫШЕНИЯ скорости исполнения на этой задаче он НЕ ДАЕТ — это специально проверялось специальными недоверчивыми программистами-студентами-аспирантами.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.