Re[14]: Устаревший блок begin end
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 10.06.05 10:32
Оценка: :)
Здравствуйте, Пацак, Вы писали:

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



СГ>>А таких мест больше нет, вот смотрите:

П>(скип)

П>
П>PROCEDURE ... BEGIN ... END;
П>


П>


А еще есть MODULE ... BEGIN ... CLOSE ... END

В данном случае BEGIN END — это не самостоятельный блок, а часть составной инструкции PROCEDURE или MODULE.
Re[2]: Синтаксический оверхед
От: moudrick Россия http://community.moudrick.net/
Дата: 10.06.05 10:33
Оценка: 6 (2) +1 :))) :))
Здравствуйте, DMitay, Вы писали:

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


DM>Сергей, у меня к Вам вопрос! В каком учебном заведении вы защищали свою кандидатскую?


Я откроя вам тайну, уважаемые незаигнорившие эту ветку из раздела "Коллеги, улыбнитесь"

Сергей Губанов — видный и перспективный учёный в области психологии IT-специалистов.

Сейчас он затеял новое исслендование, создал этот топик и наблдает
за разнообразными реакциями отвечающих. Иногда подогревая спор своими репликами,
в случаях, когда хочет поподробнее какой нибудь заинтересовавший его феномен.
А также для маскировки истинной цели своего исследования.
Re[3]: Синтаксический оверхед
От: DMitay Украина  
Дата: 10.06.05 10:38
Оценка:
Здравствуйте, moudrick, Вы писали:

M>Здравствуйте, DMitay, Вы писали:


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


DM>>Сергей, у меня к Вам вопрос! В каком учебном заведении вы защищали свою кандидатскую?


M>Я откроя вам тайну, уважаемые незаигнорившие эту ветку из раздела "Коллеги, улыбнитесь"


M>Сергей Губанов — видный и перспективный учёный в области психологии IT-специалистов.


M>Сейчас он затеял новое исслендование, создал этот топик и наблдает

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


Угу, конечно... тогда этот видный и перспективный ученый в области психологии просто напросто присвоил себе звание кфмн.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[9]: Синтаксический оверхед
От: Socrat Россия  
Дата: 10.06.05 10:42
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

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


S>>Там мы дождемся перевода данного или похожего кода на Оберон?


СГ>Не понял, я что ли должен за Вас чего-то переводить? А самим слабо что-ли? Кому это нужно, мне или Вам? Переведите, подсчитайте служебные слова, возьмите калькулятор, разделите два полученных числа друг на друга. Ну?


Ладно. Берем выражение:

while (str1[i++] = str2[j++]);


Получаем:

* * str1 * i * * * str2 * j * * * *

Теперь паскаль (оберан не знаю):

repeat
  str1[i] := str2[j];
  i := i+1;
  j := j+1
until str1[i-1] = 0


Получаем:

* str1 * i * * str2 * j * * i * i * 1 * j * j * 1 * str1 * i * 1 * * 0

Теперь: в С каждая переменная используется по одному разу. Заменяем повторные использования идентификаторов и числа (в С их нет) на звездочки:

* str1 * i * * str2 * j * * * * * * * * * * * * * * * * * * * * * *

Получаем для С 4 идентификатора и 11 служебных символов, для паскаля 4 идентификатора и 27 служебных символов.
Re[9]: Oberon - Примеры кода
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 10.06.05 10:43
Оценка: -3 :)
Здравствуйте, Mamut, Вы писали:

M> Дебагить его тоже невозможно


Похоже для всех Си-образных программистов сидение в дебагере — это основное времяпрепровождение.
А Вы вообще в курсе, что есть класс программ, которые в принципе нельзя дебажить?
(например, системы реального времени нельзя дебажить по определению)

Лично я, например, в дебагере не сижу вообще:
1) Использую математически доказуемые алгоритмы.
2) Если не могу выполнить пункт (1), то делаю так что программа сама сообщает где ошибка.

M> На более-менее реальных примерах Оберон в десятки раз проигрывает в читаемости.


А вот тут как на счет читаемости:
while (x = a() ? b(k[i++]) : c(l[j--]) ) d(x);


http://www.rsdn.ru/Forum/Message.aspx?mid=1215442&amp;only=1
Автор: Пацак
Дата: 09.06.05
Re[9]: Синтаксический оверхед
От: Пацак Россия  
Дата: 10.06.05 10:43
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Не понял, я что ли должен за Вас чего-то переводить? А самим слабо что-ли? Кому это нужно, мне или Вам? Переведите, подсчитайте служебные слова, возьмите калькулятор, разделите два полученных числа друг на друга. Ну?


Ну никто тебя за язык не тянул...

Имеем :
C/C++ (не используя адресной арифметики):
while (str1[i++] = str2[j++]);

Лексемы: 11
Строки: 1
Символы: 30;

C/C++ (с адресной арифметикой):
while (*str1++ = *str2++);

Лексемы: 9
Строки: 1
Символы: 26;

OBERON:
continue := TRUE;
WHILE continue DO
  inc(i);
  inc(j);
  str1[i] = str2[j];
  IF str[j] == #0 THEN continue := FALSE END;
END;

Лексемы: 26
Строки: 7
Символы (не считая отступов): 113;

No comments...
Ку...
Re[9]: Oberon - Примеры кода
От: garant  
Дата: 10.06.05 10:44
Оценка:
Здравствуй, Mamut.

M> MODULE FigureList; (* tlozza@student.ethz.ch *)

M> TYPE
M> Figure = OBJECT
M> name : System.String;
M> next : Figure; (* Reference to the next figure. *)
M> END Figure;
M> VAR
M> FigureList, MyFigure, Iterator : Figure;
M> BEGIN
M> NEW(MyFigure); (* Create new figure object/instance. *)
M> MyFigure.name := "my favorite";

Гм. На паскаль похоже.

--
Тон
Posted via RSDN NNTP Server 1.9
Re[15]: Устаревший блок begin end
От: Пацак Россия  
Дата: 10.06.05 10:45
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>В данном случае BEGIN END — это не самостоятельный блок, а часть составной инструкции PROCEDURE или MODULE.


Что мешало BEGIN тут не использовать?
Ку...
Re[15]: Устаревший блок begin end
От: Mamut Швеция http://dmitriid.com
Дата: 10.06.05 10:45
Оценка:
СГ>А еще есть MODULE ... BEGIN ... CLOSE ... END

СГ>В данном случае BEGIN END — это не самостоятельный блок, а часть составной инструкции PROCEDURE или MODULE.



Смотрим сюда
Автор: Mamut
Дата: 10.06.05
и видим, что если не BEGIN, то END присутствует в Обероне повсюду. Так, если быстренько посчитать разницу между [BEGIN + ]END ([пять + ]три символа, написанных заглавными буквами) и комбинацию {} (два символа, выделяющих группу), то увидим, что лексемы — побоку, главное — читаемость.


dmitriid.comGitHubLinkedIn
Re[10]: Oberon - Примеры кода
От: Пацак Россия  
Дата: 10.06.05 10:47
Оценка: :)
Здравствуйте, Сергей Губанов, Вы писали:

СГ>(например, системы реального времени нельзя дебажить по определению)


Начинаю бояться летать на самолетах....
Ку...
Re[13]: *
От: Demiurg  
Дата: 10.06.05 10:48
Оценка: +1
Здравствуйте, Сергей Губанов, Вы писали:

СГ>синтаксический оверхед = 26/11 = 2.36


СГ>(подсчитывал только служебные символы, пользовательские идентификаторы — нет).


Скобки подсчитал? Эх, не понимаешь ты смысла... И охота такой ерундой маяться?
... << RSDN@Home 1.1.4 beta 7 rev. 463>>
Re[2]: Синтаксический оверхед
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 10.06.05 10:51
Оценка: :))
Здравствуйте, DMitay, Вы писали:

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


DM>Сергей, у меня к Вам вопрос! В каком учебном заведении вы защищали свою кандидатскую?


Ни в каком учебном заведении я ее не защищал. Я ее защищал в одном из самых престижных институтов РАН по теоретической физике. Но к программированию она отношения не имеет. Тема диссертации "Квантовая групповая редукция XXZ модели Гейзенберга".

http://ru.arxiv.org/multi?archive=hep-th&amp;file=new+abstracts&amp;year=%2705&amp;month=06&amp;args=&amp;search_year=all+years&amp;field_1=au&amp;query_1=Gubanov&amp;%2Ffind=+Find+&amp;subj_cond-mat=--%3E+cond-mat+subject+classes&amp;subj_physics=--%3E+physics+subject+classes
Re[16]: Устаревший блок begin end
От: moudrick Россия http://community.moudrick.net/
Дата: 10.06.05 10:51
Оценка: :))) :)
Здравствуйте, Mamut, Вы писали:

СГ>>А еще есть MODULE ... BEGIN ... CLOSE ... END


СГ>>В данном случае BEGIN END — это не самостоятельный блок, а часть составной инструкции PROCEDURE или MODULE.



M>Смотрим сюда
Автор: Mamut
Дата: 10.06.05
и видим, что если не BEGIN, то END присутствует в Обероне повсюду. Так, если быстренько посчитать разницу между [BEGIN + ]END ([пять + ]три символа, написанных заглавными буквами) и комбинацию {} (два символа, выделяющих группу), то увидим, что лексемы — побоку, главное — читаемость.


Я все понял. Чтобы С победил Оберон, надо просто упразднить {
Re[10]: Oberon - Примеры кода
От: Кодёнок  
Дата: 10.06.05 10:53
Оценка:
СГ>Похоже для всех Си-образных программистов сидение в дебагере — это основное времяпрепровождение.
СГ>А Вы вообще в курсе, что есть класс программ, которые в принципе нельзя дебажить?
СГ>(например, системы реального времени нельзя дебажить по определению)

СГ>Лично я, например, в дебагере не сижу вообще:

СГ>1) Использую математически доказуемые алгоритмы.
СГ>2) Если не могу выполнить пункт (1), то делаю так что программа сама сообщает где ошибка.

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

Хочу увидеть математическое доказательство правильности:

1. Отрисовки ГУИ-элементов.
2. Взаимодействия с API (про разные грабли все наслышаны).
3. Средних размеров приложения, класса ICQ (движок в расчёт не берём).
Re[10]: Oberon - Примеры кода
От: Demiurg  
Дата: 10.06.05 10:56
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Лично я, например, в дебагере не сижу вообще:

СГ>1) Использую математически доказуемые алгоритмы.
СГ>2) Если не могу выполнить пункт (1), то делаю так что программа сама сообщает где ошибка.

Похоже ты не занимался реальным программированием... Теоретик? Тогда понятно — в сад.

M>> На более-менее реальных примерах Оберон в десятки раз проигрывает в читаемости.


СГ>А вот тут как на счет читаемости:

СГ>
СГ>while (x = a() ? b(k[i++]) : c(l[j--]) ) d(x);
СГ>


Что?
... << RSDN@Home 1.1.4 beta 7 rev. 463>>
Re[10]: Oberon - Примеры кода
От: moudrick Россия http://community.moudrick.net/
Дата: 10.06.05 10:57
Оценка:
СГ>2) Если не могу выполнить пункт (1), то делаю так что программа сама сообщает где ошибка.

С указанием (номера строки) / (номера символа) начала и конца ошибочной инструкции?

Или как? Можно поподробнее, желательно с примером, приближенным к реальности.
Re[11]: Oberon - Примеры кода
От: Socrat Россия  
Дата: 10.06.05 11:00
Оценка:
Здравствуйте, moudrick, Вы писали:

СГ>>2) Если не могу выполнить пункт (1), то делаю так что программа сама сообщает где ошибка.


M>С указанием (номера строки) / (номера символа) начала и конца ошибочной инструкции?


M>Или как? Можно поподробнее, желательно с примером, приближенным к реальности.


Да. И распечатывает все глобальные переменные и локальные переменные функции.
Re[10]: Горе программисты
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 10.06.05 11:03
Оценка:
П>OBERON:
П>
П>continue := TRUE;
П>WHILE continue DO
П>  inc(i);
П>  inc(j);
П>  str1[i] = str2[j];
П>  IF str[j] == #0 THEN continue := FALSE END;
П>END;
П>


Эх горе программисты повсюду развелись понимаеш-ш-ш-шь...
Всё делать самому приходится...
LOOP 
  a[i] := b[j]; 
  IF b[j] = 0X THEN EXIT END;
  INC(i); 
  INC(j)
END
Re[10]: Oberon - Примеры кода
От: Кодт Россия  
Дата: 10.06.05 11:05
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

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


M>> Дебагить его тоже невозможно


СГ>Похоже для всех Си-образных программистов сидение в дебагере — это основное времяпрепровождение.

СГ>А Вы вообще в курсе, что есть класс программ, которые в принципе нельзя дебажить?
СГ>(например, системы реального времени нельзя дебажить по определению)

СГ>Лично я, например, в дебагере не сижу вообще:

СГ>1) Использую математически доказуемые алгоритмы.
СГ>2) Если не могу выполнить пункт (1), то делаю так что программа сама сообщает где ошибка.

Теоретически, нет разницы между теорией и практикой. Практически же, разница есть.

Реалтайм можно дебажить — начиная от хардверных стендов и кончая самыми разными чисто софтверными инструментами (журнал обращений к ОС, отладочный вывод, а то и пошаговое выполнение отдельных задач).
Пример: умело расставляя приоритеты нескольким задачам, ввели систему в жуткие тормоза. Журнал показал, что идёт битва за один системный мутекс (в менеджере памяти), а расстановка меток выявила участки кода, где захват этого мутекса приводил к дребезгу.
Дальше было тонкое колдовство над временной диаграммой...
Перекуём баги на фичи!
Re[10]: Синтаксический оверхед
От: Пацак Россия  
Дата: 10.06.05 11:09
Оценка:
Здравствуйте, Пацак, Вы писали:

П>Ну никто тебя за язык не тянул...


П>Имеем :


До кучи:
C/C++ (OOP-style):
str1= str2;

Лексемы: 2
Строки: 1
Символы: 11;

OBERON (OOP-style, АФАИР перегрузки операторов там нет):
str1.copy(str2);

Лексемы: 4 (не считая имени метода)
П>Строки: 1
П>Символы 16 (зависит от длины имени метода);

Плюс код C++ банально читабельнее.
Ку...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.