Здравствуйте, Igor Trofimov, Вы писали:
DG>>>а если приходит человек и говорит, я тут сбацал крутую GUI-программу на Delphi, то это говорит только о том, что человек умеет держать мышку...
A>>Радикально неверное мнение!
iT>Не, он все правильно сказал — перечитай еще раз. Из слов, что человек написал прогу на Delphi — НЕ СЛЕДУЕТ ПОЧТИ НИЧЕГО. Он может быть супер-программером, который просто больше любит Delphi, но чтобы выяснить это — придется приложить усилия...
Это же относится и к Builder-у. Так что тут язык ни при чем.
Здравствуйте, <Аноним>, Вы писали:
А>...Но только больно уж громозко. То, что в C пишется одним оператором, на Паскале пишется двумя-тремя. А если этот оператор находится в условии, то приходится еще дописывать begin-end. В общем, программа на Паскале раза в полтора длинней такой же программы на C.
Ну просто убийственный аргументище.
Длиннющий энто язык. Так мы ещё договоримся, что C/C++ — это уникальный метод стенографирования. Знать всем серетаршам.
А> Я когда-то переводил программу с C на Паскаль, весь исплевался.
Мне приходилось делать и прямые, и обратные преобразования. Правда, больше с C на OP, и чаще это выглядело как "понять суть, алгоритм действий и написать его (или подобрать) на другом языке". Плеваться, кстати, не помогает. Но несколько таких переводов весьма развивает мозги. И беглое чтение что одного, что другого синтаксиса....
... << RSDN@Home 1.1 beta 2 >>
Re[10]: мнение о Delphi
От:
Аноним
Дата:
29.09.03 11:36
Оценка:
Здравствуйте, akasoft, Вы писали:
A>Здравствуйте, <Аноним>, Вы писали:
А>>...Но только больно уж громозко. То, что в C пишется одним оператором, на Паскале пишется двумя-тремя. А если этот оператор находится в условии, то приходится еще дописывать begin-end. В общем, программа на Паскале раза в полтора длинней такой же программы на C.
A>Ну просто убийственный аргументище.
По-вашему проще изучить десятипальцевый слепой метод печати?
A>Длиннющий энто язык. Так мы ещё договоримся, что C/C++ — это уникальный метод стенографирования. Знать всем серетаршам.
Обязательно!!!
А>> Я когда-то переводил программу с C на Паскаль, весь исплевался.
A>Мне приходилось делать и прямые, и обратные преобразования. Правда, больше с C на OP, и чаще это выглядело как "понять суть, алгоритм действий и написать его (или подобрать) на другом языке".
C и Паскаль похожи, поэтому перевод заключается просто в повторении операторов на другом языке. Попробуйте написать одну и ту же функцию на C и на Паскале и посмотрите, какая запись будет компактней.
A>Плеваться, кстати, не помогает.
Конечно не помогает. Переводить надо, а не плеваться.
A>Но несколько таких переводов весьма развивает мозги. И беглое чтение что одного, что другого синтаксиса....
Для этого лучше взять разные языки. Попробуйте взять программу на Паскале и перевести ее на Пролог...
Здравствуйте, Аноним, Вы писали:
А>>>...Но только больно уж громозко. То, что в C пишется одним оператором, на Паскале пишется двумя-тремя. А если этот оператор находится в условии, то приходится еще дописывать begin-end. В общем, программа на Паскале раза в полтора длинней такой же программы на C.
A>>Ну просто убийственный аргументище.
А>По-вашему проще изучить десятипальцевый слепой метод печати?
В Delphi никто уже давно begin-end, а также прочие конструкции языка и имена переменных, типов и т.д. вручную не набирает.
A>>Длиннющий энто язык. Так мы ещё договоримся, что C/C++ — это уникальный метод стенографирования. Знать всем серетаршам. А>Обязательно!!!
Да нет, C++ — это нормально. Но вот тексты на Perl — это что-то!
А>>> Я когда-то переводил программу с C на Паскаль, весь исплевался.
A>>Мне приходилось делать и прямые, и обратные преобразования. Правда, больше с C на OP, и чаще это выглядело как "понять суть, алгоритм действий и написать его (или подобрать) на другом языке".
А>C и Паскаль похожи, поэтому перевод заключается просто в повторении операторов на другом языке. Попробуйте написать одну и ту же функцию на C и на Паскале и посмотрите, какая запись будет компактней.
A>>Плеваться, кстати, не помогает.
А>Конечно не помогает. Переводить надо, а не плеваться.
A>>Но несколько таких переводов весьма развивает мозги. И беглое чтение что одного, что другого синтаксиса....
Затруднения может вызвать перевод как в одну сторону так и вдругую. Попробуй к примеру перевести следующее:
A := ProbeM;
SD := [];
for j := 4 downto 1 do begin
D := A mod 10;
A := A div 10;
if (D in SD) then begin
Err := -2;
Break;
end
else begin
Include(SD,D);
RD[j] := D;
end;
end;
Здравствуйте, FWP, Вы писали: FWP>Затруднения может вызвать перевод как в одну сторону так и вдругую. Попробуй к примеру перевести следующее:
A := ProbeM;
SD := [];
for j := 4 downto 1 do begin
D := A mod 10;
A := A div 10;
if (D in SD) then begin
Err := -2;
Break;
end
else begin
Include(SD,D);
RD[j] := D;
end;
end;
FWP>Сомневаюсь, что на С++ будет короче.
A = ProbeM();
SD = 0;
for(int j=4; j>0; j--)
{
D = A % 10;
A /= 10;
if (SD & (1<<D))
{
Err = -2;
break;
}
else
SD |= (1<<(RD[j] = D));
}
... << RSDN@Home 1.1 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, FWP, Вы писали: FWP>>Затруднения может вызвать перевод как в одну сторону так и вдругую. Попробуй к примеру перевести следующее: S>
S> A := ProbeM;
S> SD := [];
S> for j := 4 downto 1 do begin
S> D := A mod 10;
S> A := A div 10;
S> if (D in SD) then begin
S> Err := -2;
S> Break;
S> end
S> else begin
S> Include(SD,D);
S> RD[j] := D;
S> end;
S> end;
S>
Здравствуйте, AndrewK, Вы писали:
AK>Да, получилось не короче, но бегло воспринять смысл кода стало гораздо сложнее, ИМХО. Хотя — дело привычки...
Именно. Единственная не вполне очевидная вещь — смысл манипуляций с битами. Но следует отметить, что я привел код на голом С++ — без классов. Хорошая библиотека сделает код не менее понятным, чем на Delphi. Что-то типа
{
A = ProbeM();
BitSet<int, 10> SD;
for(int j=4; j>0; j--)
{
D = A % 10;
A /= 10;
if (D < SD)
{
Err = -2;
break;
}
else
SD <<= D;
}
}
... << RSDN@Home 1.1 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, FWP, Вы писали: FWP>>Затруднения может вызвать перевод как в одну сторону так и вдругую. Попробуй к примеру перевести следующее: S>
S> A := ProbeM;
S> SD := [];
S> for j := 4 downto 1 do begin
S> D := A mod 10;
S> A := A div 10;
S> if (D in SD) then begin
S> Err := -2;
S> Break;
S> end
S> else begin
S> Include(SD,D);
S> RD[j] := D;
S> end;
S> end;
S>
Сдается мне, что в этом коде ошибка. Смысл приведенного фрагмента на Pascal в следующем:
-разобрать 4-х значное целое число;
-если в числе есть повторяющиеся цифры, то сформировать ошибку.
Так вот код на С++ не отловит повторяющиеся нули. Хотя я могу и ошибаться, а под рукой нет С++ компилера.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, AndrewK, Вы писали:
AK>>Да, получилось не короче, но бегло воспринять смысл кода стало гораздо сложнее, ИМХО. Хотя — дело привычки... S>Именно. Единственная не вполне очевидная вещь — смысл манипуляций с битами. Но следует отметить, что я привел код на голом С++ — без классов.
А Pascal код тоже впрочем на чистом Pascal. Еще на Виртовском! 1968 года производства
S>Хорошая библиотека сделает код не менее понятным, чем на Delphi. Что-то типа S>{ S> A = ProbeM(); S> BitSet<int, 10> SD; S> for(int j=4; j>0; j--) S> { S> D = A % 10; S> A /= 10; S> if (D < SD) S> { S> Err = -2; S> break; S> } S> else S> SD <<= D; S> } S>}
Приведенный код еще хуже по читаемости чем голый С++ Одно
Здравствуйте, FWP, Вы писали: FWP>Сдается мне, что в этом коде ошибка. Смысл приведенного фрагмента на Pascal в следующем: FWP>-разобрать 4-х значное целое число; FWP>-если в числе есть повторяющиеся цифры, то сформировать ошибку.
Ну да FWP>Так вот код на С++ не отловит повторяющиеся нули. Хотя я могу и ошибаться, а под рукой нет С++ компилера.
С чего бы это? Или кто-то думает, что (1<<0) == 0?
... << RSDN@Home 1.1 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[13]: мнение о Delphi
От:
Аноним
Дата:
01.10.03 08:47
Оценка:
Здравствуйте, Sinclair, Вы писали:
S>
S> SD |= (1<<(RD[j] = D));
S>
Чем манипулячествовать над битами, не проще ль использовать bitset?
Здравствуйте, FWP, Вы писали: FWP>А Pascal код тоже впрочем на чистом Pascal. Еще на Виртовском! 1968 года производства
Разве? А по-моему, процедура Include появилась только в Delpi, и то не сразу.
Про читаемость — точно, я не прав. Надо использовать <=, т.к. нас вполне устроит совпадение.
Если хочется большей строгости, то достаточно превратить это в
(BitSet<int, 4>(D) <= SD)
но я предполагаю, что соответствующий неявный конструктор уже объявлен.
Такая запись гораздо ближе к математическому синтаксису "а принадлежит B" (помните "э наоборот?"), чем in.
На плюсах человек вообще довольно быстро отвыкает механически трактовать a++ как inc eax. А для тех, кто не хочет — всегда есть шанс воспользоваться классическим
(SD.Contains(D))
... << RSDN@Home 1.1 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[12]: мнение о Delphi
От:
Аноним
Дата:
01.10.03 08:58
Оценка:
A>>>Но несколько таких переводов весьма развивает мозги. И беглое чтение что одного, что другого синтаксиса.... FWP>Затруднения может вызвать перевод как в одну сторону так и вдругую. Попробуй к примеру перевести следующее:
FWP>
FWP> A := ProbeM;
FWP> SD := [];
FWP> for j := 4 downto 1 do begin
FWP> D := A mod 10;
FWP> A := A div 10;
FWP> if (D in SD) then begin
FWP> Err := -2;
FWP> Break;
FWP> end
FWP> else begin
FWP> Include(SD,D);
FWP> RD[j] := D;
FWP> end;
FWP> end;
FWP>
FWP>Сомневаюсь, что на С++ будет короче.
На C его уже перевели до меня. Теперь текст на Прологе:
test (X, 0, _) :- !.
test (X, N, List) :-
X1 = X mod 10,
not member (X1, List),
X2 = X div 10,
N1 = N - 1,
test (X2, N1, [X1| List]).
Здравствуйте, Sinclair, Вы писали:
FWP>>А Pascal код тоже впрочем на чистом Pascal. Еще на Виртовском! 1968 года производства S>Разве? А по-моему, процедура Include появилась только в Delphi
Include появилась толи в 6м толи в 7м Turbo Pascal'е.
0 программистов ругал сердитый шеф,
потом уволил одного, и стало их FF!
Hello, !
You wrote on Wed, 01 Oct 2003 08:58:08 GMT:
> На C его уже перевели до меня. Теперь текст на Прологе: >
> test (X, 0, _) :- !.
> test (X, N, List) :-
> X1 = X mod 10,
> not member (X1, List),
> X2 = X div 10,
> N1 = N - 1,
> test (X2, N1, [X1| List]).
>
А где здесь N или N1 на 0 проверяется?
Best regards,
Sergey.
Posted via RSDN NNTP Server 1.7 "Bedlam"
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[14]: мнение о Delphi
От:
Аноним
Дата:
01.10.03 10:20
Оценка:
Здравствуйте, Sergey, Вы писали:
S>Hello, ! S>You wrote on Wed, 01 Oct 2003 08:58:08 GMT:
>> На C его уже перевели до меня. Теперь текст на Прологе: >>
>> test (X, 0, _) :- !.
>> test (X, N, List) :-
>> X1 = X mod 10,
>> not member (X1, List),
>> X2 = X div 10,
>> N1 = N - 1,
>> test (X2, N1, [X1| List]).
>>
S>А где здесь N или N1 на 0 проверяется?
S>Best regards, S> Sergey.
Здравствуйте, zaiats_2k, Вы писали: _>Include появилась толи в 6м толи в 7м Turbo Pascal'е.
Может быть. Но у Вирта ее совершенно точно не было — было только объединение/пересечение множеств.
... << RSDN@Home 1.1 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, zaiats_2k, Вы писали: _>>Include появилась толи в 6м толи в 7м Turbo Pascal'е. S>Может быть. Но у Вирта ее совершенно точно не было — было только объединение/пересечение множеств.
Это настолько важно? Include\Exclude были добавлены в TurboPascal только с одной целью — повышение скорости добавления\удаления одиночного значения в\из множество. Вопреки синтаксису похожему на вызов процедуры, Include и Exclude, это не есть процедуры. Компилируются они в ОДНУ ассемблерную команду. Логически же это тоже самое пересечение множества с другим множеством, состоящим из одного элемента.
0 программистов ругал сердитый шеф,
потом уволил одного, и стало их FF!
Re[16]: мнение о Delphi
От:
Аноним
Дата:
01.10.03 11:31
Оценка:
Здравствуйте, Sergey, Вы писали:
S>Hello, ! S>You wrote on Wed, 01 Oct 2003 10:20:38 GMT:
S>>> А где здесь N или N1 на 0 проверяется?
>> test (X, 0, _) :- !.
S>Понятно. А где 4 в качестве начального значения N задается?
А это когда даешь команду вроде test (1234, 4, []). Если хочется, можно создать еще одну функцию, вроде
start (X) :- test (X, 4, []).
А можно задать и другое значение. Единственное ограничение — третий параметр должен быть [].