Форум: "Прочее";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];
ВнизСишные циклы FOR в Паскаль не переводятся? Найти похожие ветки
← →
Mystic © (2006-12-27 11:06) [200]> - это такая искусственость: присвоение (это же цикл изменения
> счётчика, почему оно вынесено?), inc(i,step)
Все программирование -- искусственность. Кому-то не хватает конечных автоматов, и он предложит ввести конструкции вида
statemacine
state Initial:
I := 0;
gostate ReadFirst;
state ReadFirst:
{ ... }
end;
Кому-то не хватает именованых циклов, кому-то еще-чего... Я не сторонник большого разрастания языка, новые возможности не должны быть экзотическими. Например, имхо, step в for -- экзотическая возможность -- очень не часто возникает в ней необходимость, а когда возникает, то вполне можно обойтись while.
← →
Palladin © (2006-12-27 17:33) [201]
> то вполне можно обойтись while.
а большинстве случаев - просто умножением :)
← →
Vga © (2006-12-27 20:20) [202]> [192] ors_archangel © (27.12.06 05:21)
> Vga © (25.12.06 21:46) [188]
> > Если хочешь посмотреть, что получается, когда неэффективно
> > работает Smart Linking - попробуй сделать форму с кнопкой
> > на Lazarus/LCL. Получается ехе метров на 6. В Delphi ехе
> > файл сравнительно велик из-за большого количества кода,
> > обеспечивающего удобства для программиста.
> насколько я знаю, где-то 5/6 - это debug info, а не код
Не в Delphi. В lazarus после strip ехе облегчается до пары метров.
← →
Anatoly Podgoretsky © (2006-12-27 20:31) [203]> Palladin (27.12.2006 17:33:21) [201]
> а большинстве случаев - просто умножением :)
Шутник, всегда сложения хватало.
← →
Arct (2007-01-06 05:47) [204]У кого нибудь есть функции синтаксического разбора паскалевского кода?
← →
Галинка © (2007-01-06 06:36) [205]А мне больше всего н6равится цикл foreach (... in ... ). Могли бы и раньше такое придумать.
Конечно крутые прогрмамеры сейчас заплюют. но в вайле больше вероятность возникновения ошибки. особенно если условия сложнее чем "болше равно" и индексов поболее и индексированных переменных ((
← →
Arct (2007-01-06 06:45) [206]
> Галинка © (06.01.07 06:36) [205]
>
> А мне больше всего н6равится цикл foreach (... in ... ).
> Могли бы и раньше такое придумать.
>
> Конечно крутые прогрмамеры сейчас заплюют.
А по-моему это как раз вы плюёте на совместимость.
← →
Eraser © (2007-01-06 13:27) [207]> [206] Arct (06.01.07 06:45)
а зачем она нужна, эта совместимость со старыми версиями?
← →
jack128 © (2007-01-06 14:42) [208]Anatoly Podgoretsky © (27.12.06 20:31) [203]
Шутник, всегда сложения хватало.
имелось в цикле for вместо
for I := 0 to Max - 1 step 2 do
Arr[I] := 10;
писать
for I := 0 to (Max - 1) div 2 do
Arr[I * 2] := 10;
← →
palva © (2007-01-06 15:00) [209]
> Arct (06.01.07 05:47) [204]
> У кого нибудь есть функции синтаксического разбора паскалевского
> кода?
Есть в компиляторе http://www.freepalcal.org , исходные паскалевские коды которого выложены на сайте.
← →
ForStep (2007-01-06 15:25) [210]
function ForStep (var i: integer; _to, _step: integer): boolean;
begin
if _step=0 then
begin
result:=false;
exit;
end;
i:=i+_step;
if _step>0 then
result:=not (i>_to)
else
result:=not (i<_to);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i,step:integer;
begin
i:=0;
step:=2;
while ForStep(i,10,step) do
caption:=caption+";"+IntToStr(i);
end;
← →
ors_archangel © (2007-01-06 16:26) [211]
> while ForStep(i,10,step) do
Замечательно! Так действительно можно было бы делать, если бы delph не принимал всё слишком всерьёз :( вот встроил бы функцию ForStep вместо её вызова, причём одна переменна здесь ещё передаётся по сслыке, а значит оптимизация была бы ещё лучше (работа с регистром вместо повсемесной косвенной адресации), дальше нужно было бы оптимизировать инвариантность if, и код был бы не хуже i := 0; while i < 10…, правда если step не константен, то постоянное ветвление - это оч плохо, здесь нужна другая оптимизация - вынесение проверки условия _step>0 из цикла (_step в цикле не должен меняться, хотя ForStep этого не гарантирует, как и для остальных переменных), что в общем-то разрешимо только с помощью самомодификации кода, которая в мире SMP и DEP уже не катит, поэтому придётся делать два цикла - если они маленькие, иначе - неотимизируемо... Всё это один большой аргумент, доказывающий необходимость for to step как встроенной конструкции языка, особенно для тупых компиляторов…
Я тоже против разростания языка до конкретной терминологии задачи (как в случае с statemachine в [200]), я за то, чтобы язык имел больше возможностей выражать мысль человеческую, хорший пример - foreach, любой программист, который сколько-то проргаммист, я уверен, сможет перевести это, как и step, с английского и правильно воспринять смысл, а в случае же с statemachine уже нужно знать теорию автоматов, когда на самом деле ему было бы достаточно в действительности знать switch и goto, - это действительно сомнительно. Именованные циклы - тоже тема, тогда можно было бы сделать весьма наглядный дальний break по имени цикла вместо крамольного goto. В ЕЯ предопределены многие супербазовые понятия, как например, целое-часть, причём среди многих понятий есть много общего, но в ЯП почему-то нужно обязательно выкручивать одно через другое, если это возможно: n базовых блоков структурного программирования и живите как хотите :( Понятия, понятные каждому, должны быть понятны и компилятору, например почему в Делфи нет оператора retrun - вряд ли потому что в Борланде каждый день думают как улучшить язык. Забота о совместимости? Если не вносить несовместимость, то вообще не будет развития
← →
кобольеро (2007-01-07 01:10) [212]
> я за то, чтобы язык имел больше возможностей выражать мысль
> человеческую, хорший пример - foreach, любой программист,
> который сколько-то проргаммист, я уверен, сможет перевести
> это
SET WX-INDEX TO 1.
SEARCH WX-STATION
AT END MOVE "ERROR" TO DETAIL-STATION-NAME
WHEN IN-WEATHER-STATION = WX-CODE (WX-INDEX)
MOVE WX-NAME (WX-INDEX) TO DETAIL-STATION-NAME.
MOVE ZERO TO WS-HIGH-TEMP.
MOVE 999 TO WS-LOW-TEMP.
PERFORM FIND-THE-HI-AND-LO
VARYING SUB-X FROM 1 BY 1
UNTIL SUB-X > 12.
MOVE WS-HIGH-TEMP TO DETAIL-HIGH-TEMP.
MOVE WS-LOW-TEMP TO DETAIL-LOW-TEMP.
WRITE OUT-ITEM FROM DETAIL-LINE.
READ IN-FILE
AT END MOVE "Y" TO END-OF-FILE-FLAG.
← →
Arct (2007-01-07 01:50) [213]
> jack128 © (06.01.07 14:42) [208]
> имелось в цикле for вместо
> for I := 0 to Max - 1 step 2 do
> Arr[I] := 10;
Объясни, зачем тебе каждый десятый элемент выставлять в 10?
Также непонятно, зачем, например, каждый сорок седьмой элемент выставлять в десять, или каждый пятьсотдвадцатьпервый.
← →
Arct (2007-01-07 02:13) [214]
> palva © (06.01.07 15:00) [209]
>
>
> > Arct (06.01.07 05:47) [204]
> > У кого нибудь есть функции синтаксического разбора паскалевского
> > кода?
>
> Есть в компиляторе http://www.freepalcal.org , исходные
> паскалевские коды которого выложены на сайте.
Не работает !
← →
for (2007-01-07 02:18) [215]
> jack128 © (06.01.07 14:42) [208]
>
> Anatoly Podgoretsky © (27.12.06 20:31) [203]
> Шутник, всегда сложения хватало.
> имелось в цикле for вместо
> for I := 0 to Max - 1 step 2 do
> Arr[I] := 10;
>
> писать
> for I := 0 to (Max - 1) div 2 do
> Arr[I * 2] := 10;DoubleI := 0;
for I := 0 to Max - 1 do begin
Arr[DoubleI] := 10;
DoubleI := DoubleI +2;
end;
← →
for (2007-01-07 02:20) [216]Упс
DoubleI := 0;
for I := 0 to (Max - 1) div 2 - 1 do begin
Arr[DoubleI] := 10;
DoubleI := DoubleI +2;
end;
← →
for (2007-01-07 02:22) [217]Блин
DoubleI := 0;
for I := 0 to (Max - 1) div 2 do begin
Arr[DoubleI] := 10;
DoubleI := DoubleI +2;
end;
← →
Галинка © (2007-01-07 03:59) [218]Arct (06.01.07 06:45) [206]
а разве в каком то шарпе нет foreach?
← →
jack128 © (2007-01-07 05:04) [219]for (07.01.07 2:18) [215]
Дык это ж нужно доп. переменную объявлять ;-) Лень, она - матушка, вперёд нас родилась ;-)
← →
Arct (2007-01-07 07:53) [220]
> Галинка © (07.01.07 03:59) [218]
>
> Arct (06.01.07 06:45) [206]
>
> а разве в каком то шарпе нет foreach?
А разве в Дельфи 7 есть ?
> jack128 © (07.01.07 05:04) [219]
>
> for (07.01.07 2:18) [215]
> Дык это ж нужно доп. переменную объявлять ;-) Л
Ты типа субботу соблюдаешь?
А вообще то нормального человека устроило бы и : Arr[I * 2] := 10;
DoubleI := DoubleI +2; - разве что для скорости.
← →
ors_archangel © (2007-01-07 17:28) [221]
> кобольеро (07.01.07 01:10) [212]
Да... что за язык? (Сам придумал?)
В принципе, семантически каждая строка в отдельности понятна, не кто и не обещал, что без практики всё должно читаться как собственные мысли! Но чтобы полностью понять данных код, нужно знать контекст (задачу данного кода, или хотя бы назначения модуля, которому он принадлежит) - это всегда так, даже в ЕЯ, в большей или меньшей степени в зависимости от ситуации. В общем, данный язык слишком многословен: нет ничего хорошего в повторении ЕЯ, достаточно вспонить прочтение любой математической записи - насколько это громозко и не наглядно; в частности для данного примера, такие вещи, как move … to … обязательно нужно заменять операторами. Главный минус этого ЯП - при том, что запись становится действительно схожа с естественной, на самом деле язык остаётся в рамках строгого, ограниченного малым количеством элементарных статически функционирующих блоков, императивного стиля: это сразу видно по "разнообразию" операторов, и по их строгой последовательности. Т.о. данный ЯП представляет собой в сущности обычный язык высокого уровня, нолько с намёком на естественную запись. Не естественность нужна языку, а гибкость, например, чтобы такое понятие как условие можно было изменять: допустим, у нас есть цикл, выполняющийся до некоторого условия, а по алгоритму может возникнуть необходимость изменить это условие окончания - в Pascale придётся, как говорится, использовать всю мощь языка в виде функтора, значение которого будет то одна функция, то другая, и таким образом мы будем менять условие, вот это неправильно. Это общий недостаток - при наличии понятия оно используется лишь статически, а практически, собственно, программе недоступно для изменения, т.о. сильно ограничеваются свобода действий при решении любой задачи, ведь тоже самое мы наблюдаем и с типами, а в неfreepascal"е даже с операторами :(
← →
кобольеро (2007-01-07 18:08) [222]> ors_archangel © (07.01.07 17:28) [221]
Да... что за язык? (Сам придумал?)
Это COBOL, мальчик.
← →
ors_archangel © (2007-01-07 18:25) [223]Объяснил бы лучше, что ты этим - [212] - хотел сказать, что Cobol - идиотский язык, я уже понял, можешь не объяснять, или что-то другое?
← →
Галинка © (2007-01-07 18:34) [224]Arct (07.01.07 07:53) [220]
извините. Я просто сейчас на шарпе все больше. И думаю, что их конструкции не такие уж и плохие )) Просто есть мусульмане, а есть христиане... И те и другие имеют право на существование. Псрото не всегда сутьважно, как устроен процесс изнутри. Возможностей сейчас просто море, железо тоже продвинулось, не надо воевать за каждую строку кода. Расслабтесь и получайте удовольствие.
Но это конечно не мнение профи. Я когда своему шефу сказала, что мне посоветовали что надо экономнее оперативкой и всем таким пльзваться, он меня обсмеял. Сказал, что для пентиума 4 с 3,4 частотой и двумя гигами оперативки нефиг экономить на спичках. Главное что-б работало. И побыстрее )) (в смысле уже через месяц прога была готова).
← →
кобольеро (2007-01-07 18:48) [225]
> ors_archangel © (07.01.07 18:25) [223]
Тебе не угодишь. statemachine не устраивает, простые английские фразы MOVE..TO и PERFORM..VARYING - идиотизмом называешь. Видно, что есть свои гениальные мысли, которые превосходят все придуманное за 50 лет развития программирования. Жаль я не гений, чтобы их понять.
← →
ors_archangel © (2007-01-07 19:23) [226]
> кобольеро (07.01.07 18:48) [225]
А тебя, как будто, statemachine устраивает?
Почему "простые английские фразы" меня не устраивают я уже написал: по аналогии с математической записью они излишни в программировании: загромождают запись, разве мало общепринятых операторов?
И единственная мысль, которая у меня есть по поводу всех ЯП, причисляющих себя к высокому уровню, выражается в простом непонимании их неразвитости (которая на лицо), причём эта мысль отнюдь, как видишь, не гениальна. Не отрицаю я всего, но расхваливать тоже не собираюсь. Сарказм твой мне вполне понятен, чтож, заслужил значит, постараюсь в будущем быть толерантнее. "Просто есть мусульмане, а есть христиане...", а я похоже, атеист.
p.s. За слово "идиотизм" извиняюсь, не хотел никого обижать, достаточно было слова "избыточность".
← →
Anatoly Podgoretsky © (2007-01-07 22:03) [227]> Галинка (07.01.2007 18:34:44) [224]
Правильный у тебя шеф.
← →
Arct (2007-01-08 03:31) [228]
> ors_archangel © (07.01.07 17:28) [221]
> > кобольеро (07.01.07 01:10) [212]
> Да... что за язык? (Сам придумал?)
> В принципе, семантически каждая строка в отдельности понятна,
> не кто и не обещал, что без практики всё должно читаться
> как собственные мысли!
Это в Си не обещал, из за возможности массы извратов. А в Паскале - обычное дело.
> Но чтобы полностью понять данных код, нужно знать контекст
> (задачу данного кода, или хотя бы назначения модуля, которому
> он принадлежит)
Чушь. Может у вас в Си и так, а в Паскале принято давать ПОНЯТНЫЕ имена.
← →
ors_archangel © (2007-01-08 07:11) [229]
> Arct (08.01.07 03:31) [228]
> Это в Си не обещал, из за возможности массы извратов. А
> в Паскале - обычное дело.
Согласен, Си менее читабелен, чем Паскаль, думаю здесь все согласны.
> Чушь. Может у вас в Си и так, а в Паскале принято давать
> ПОНЯТНЫЕ имена.
До сих пор удивляюсь, как безоснавательно иногда можно делать выводы :)
Я пишу недостаточно конкретно? Данный код - [212] мне как раз и не понятен, потому что имена мало о чём говорят, "семантически каждая строка понятна", и вообще, я в печали... А вы тут...
Интересно вообще-то: речь о Си совсем ведь не шла, мы с кобольеро обсуждали Cobol и ЕЯ... Ответ, имхо, не в тему, как и большая часть ветки, собственно :)
Бедный Си...
← →
J_f_S (2007-01-08 07:47) [230]Да закроют ветку наконец, или нет?
← →
мр Паскаль (2007-01-09 04:25) [231]
> Галинка © (07.01.07 18:34) [224]
>
> Arct (07.01.07 07:53) [220]
>
> извините. Я просто сейчас на шарпе все больше. И думаю,
> что их конструкции не такие уж и плохие )) Просто есть мусульмане,
> а есть христиане... И те и другие имеют право на существование.
Ну и кого ты тут называешь мусульманами?
Страницы: 1 2 3 4 5 6 вся ветка
Форум: "Прочее";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];
Память: 1.06 MB
Время: 0.07 c