Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизТип void в Delphi. Найти похожие ветки
← →
Anatoly Podgoretsky © (2010-04-11 11:27) [40]
> Дмитрий С © (11.04.10 10:39) [38]
Ознакомься что означает слово функция в математике.
← →
Anatoly Podgoretsky © (2010-04-11 11:28) [41]Сообственно автор провокатор и тихо катается от смеха под столом.
← →
Virgo_Style © (2010-04-11 12:32) [42]
> А по-моему, если относиться непредвзято, то оба выражения
> равнозначны.
procedure A - процедура A.
void A - ... ?
← →
я (2010-04-11 12:34) [43]
> Anatoly Podgoretsky © (11.04.10 11:28) [41]
>
> Сообственно автор провокатор и тихо катается от смеха под
> столом.
>
+
← →
SergeyIT © (2010-04-11 13:13) [44]Только что внучка кино смотрела, где спорили о конце/начале дубинок - очень похоже на обсуждение в этой теме )))
← →
Eraser © (2010-04-11 13:47) [45]> А вот еще:
> procedure TStream.ReadBuffer(var Buffer; Count: Longint)
> ;
илиprocedure Proc(const Param);
begin
end;
← →
Дмитрий С © (2010-04-11 14:48) [46]
> Ознакомься что означает слово функция в математике.
В математике функции детерминированные, поэтому их приплетать сюда нельзя. Это раз. Другим языкам нисколько не мешает использовать это слово для функций и процедур. Это два. И ...
> Anatoly Podgoretsky © (11.04.10 11:28) [41]
>
> Сообственно автор провокатор и тихо катается от смеха под
> столом.
Завидуешь, что автор не ты? :))
← →
euru © (2010-04-11 16:12) [47]
> Медвежонок Пятачок © (11.04.10 03:25) [34]
> Я так понимаю что поднимается тема что круче, си и ли паскаль?
Возможно, некоторые из участников и хотели бы это увидеть, но у меня и в мыслях такого не было.
Просто Паскаль и С++ используют разные механизмы для различения подпрограмм, возвращающих и не возвращающих результат.
В Паскале для этого используют специальные обозначения вида подпрограмм: function возвращает результат, procedure не возвращает.
В C++ для подпрограмм, не возвращающих результат, используют специальное обозначение типа: void.
Есть языки, в которых для этих целей используется специальное обозначение параметра, содержащего возвращаемое значение.
А в С изначально и не было такого типа. Зато, как я уже писал выше, он был в Алголе 68.
← →
Дмитрий Белькевич (2010-04-11 16:29) [48]Не взлетит.
← →
oxffff © (2010-04-11 19:12) [49]Java and C++ in using Void in the domain of a function to indicate a parameterless function and, as stated earlier, Void in the range is used to indicate a procedure.
← →
Anatoly Podgoretsky © (2010-04-11 19:19) [50]> oxffff (11.04.2010 19:12:49) [49]
То есть четко признают наличие процедур и собственную лень, схитрили с void
← →
oxffff © (2010-04-11 19:35) [51]
> Anatoly Podgoretsky © (11.04.10 19:19) [50]
> > oxffff (11.04.2010 19:12:49) [49]
>
> То есть четко признают наличие процедур и собственную лень,
> схитрили с void
Почему схитрили?
← →
Игорь Шевченко © (2010-04-11 19:44) [52]Anatoly Podgoretsky © (11.04.10 19:19) [50]
В C нету процедур. В C есть только функции. Некоторые из них не возвращают результата.
← →
Григорьев Антон © (2010-04-11 19:51) [53]
> euru © (11.04.10 01:56) [27]
> Я имею в виду понятие void, означающее отсутствие типа.
> Без этого понятия система типов является неполной. И её
> приходится компенсировать другими языковыми средствами.
> В частности, в Паскале для обозначения подпрограмм, возвращающих
> значение, используется ключевое слово function, а для подпрограмм,
> невозвращающих значение, - ключевое слово procedure.
Чтобы больше не говорить такой ерунды, рекомендую познакомиться с языком Оберон (автор - тот самый Вирт, который придумал Паскаль). В нём нет слова function, есть только procedure, причём процедура может возвращать, а может не возвращать значение. "Типа" void там, естественно, тоже нет, зато система типов является замкнутой, причём это не просто красивое утверждение, а математически обоснованный факт - Вирт вообще потратил много времени на строгое теоретическое обоснование тех абстракций, которые используются в Обероне. Короче, знакомство с этим языком сильно расширяет кругозор.
← →
oxffff © (2010-04-11 19:53) [54]
> система типов является замкнутой
Подробнее пожалуйста о чем речь.
← →
Григорьев Антон © (2010-04-11 20:07) [55]
> oxffff © (11.04.10 19:53) [54]
>
> > система типов является замкнутой
>
>
> Подробнее пожалуйста о чем речь.
Если совсем коротко - то о том, что явного приведения типов в Обероне просто нет. Есть только неявное в тех случаях, когда это в принципе не может исказить значение - например, при присваивании 8-битного целого 32-битному.
http://www.vspu.ac.ru/~chul/wirth/frommodula/frommodula.htm
← →
Anatoly Podgoretsky © (2010-04-11 20:07) [56]> oxffff (11.04.2010 19:35:51) [51]
Не стали использовать, известное им название, а взяли из СИ, практически весь синтаксис взят из СИ, со всеми его условностями, символами для жрецов.
А ведь знали, что это называется "процедура"
← →
Anatoly Podgoretsky © (2010-04-11 20:09) [57]> Григорьев Антон (11.04.2010 19:51:53) [53]
Что то последнии изыски Вирта вызывают у меня некоторое неприятие, например регистро зависимость. Что то с Виртом случилось на старости.
← →
oxffff © (2010-04-11 20:14) [58]
> Григорьев Антон © (11.04.10 20:07) [55]
А вот о чем речь. Я думал о другом.
← →
oxffff © (2010-04-11 20:16) [59]
> Anatoly Podgoretsky © (11.04.10 20:07) [56]
> > oxffff (11.04.2010 19:35:51) [51]
>
> Не стали использовать, известное им название, а взяли из
> СИ, практически весь синтаксис взят из СИ, со всеми его
> условностями, символами для жрецов.
>
> А ведь знали, что это называется "процедура"
Я например, чтобы избежать такой путаницы, назвал у себя - исполнимое(executable).
← →
silver © (2010-04-11 20:22) [60]
> символами для жрецов.
жжете :-D
← →
silver © (2010-04-11 20:24) [61]
> А ведь знали, что это называется "процедура"
что непонятного в
void foo();
и чем это хуже
procedure foo();
?
← →
Григорьев Антон © (2010-04-11 20:26) [62]
> Anatoly Podgoretsky © (11.04.10 20:09) [57]
> Что то последнии изыски Вирта вызывают у меня некоторое
> неприятие, например регистро зависимость. Что то с Виртом
> случилось на старости.
Мне тоже далеко не всё в Обероне нравится. Но интересные идеи в нём всё-таки есть.
← →
Anatoly Podgoretsky © (2010-04-11 20:43) [63]> silver (11.04.2010 20:24:01) [61]
Ты это лишнии скобочки то убери. Мы в Паскале так не пишем.
← →
Anatoly Podgoretsky © (2010-04-11 20:45) [64]> Григорьев Антон (11.04.2010 20:26:02) [62]
Ну идей более чем достаточно.
Вообще плодовитый дядька столько языков изобрел. На 10 профессоров хватит.
← →
@!!ex © (2010-04-11 20:47) [65]> [63] Anatoly Podgoretsky © (11.04.10 20:43)
> Мы в Паскале так не пишем.
Мы пишем.
← →
silver © (2010-04-11 20:50) [66]
> Мы пишем.
:-D
башорк не нужен, когда есть ДМ
скобочками я обозначил возможное наличие параметров
то есть, по поводу void претензий больше нет, как я понимаю?
← →
Anatoly Podgoretsky © (2010-04-11 22:29) [67]> @!!ex (11.04.2010 20:47:05) [65]
Ты не наш человек.
← →
@!!ex © (2010-04-11 22:50) [68]> [67] Anatoly Podgoretsky © (11.04.10 22:29)
> Ты не наш человек.
У меня другая дельфи? :(
← →
Anatoly Podgoretsky © (2010-04-11 23:57) [69]У меня правильная Дельфи.
← →
silver © (2010-04-12 00:29) [70]
> У меня правильная Дельфи.
уже давно пора начать пользоваться, чо
← →
Германн © (2010-04-12 01:39) [71]
> @!!ex © (11.04.10 22:50) [68]
>
> > [67] Anatoly Podgoretsky © (11.04.10 22:29)
> > Ты не наш человек.
>
> У меня другая дельфи? :(
>
У тебя другой Паскаль. :)
← →
silver © (2010-04-12 01:55) [72]
> У тебя другой Паскаль. :)
go away
не мешай void и Ц\Ц++ ругать
← →
Германн © (2010-04-12 02:31) [73]
> silver © (12.04.10 01:55) [72]
Брысь, зараза!
Так я обычно говорю кошке, которая постоянно путается под ногами. :)
← →
uw © (2010-04-12 08:12) [74]silver © (11.04.10 20:24) [61]
что непонятного в
void foo();
и чем это хуже
procedure foo();
?
Слово void не соответствует слову procedure.
В Паскале
I: Integer;
function Foo: TSomeType;
procedure Foo2;
А в С всё наоборот:
int i;
struct some_struct *foo();
void foo2();
Чувствуешь разницу?
Можно было бы, конечно, в Паскале все типы писать справа, а специальный тип void писать слева от имени процедуры. Возможно Вирт так бы и сделал, но Паскаль был придуман до С, и Вирт облажался и всё сделал единообразно.
Можно было бы писать и так:
Foo2: void;
Но как бы мы догадались, что Foo2 - это процедура?
Есть ещё вариант:
procedure Foo2: void;
Но на фиг тогда void, если и без него всё понятно, а?
← →
asail © (2010-04-12 08:17) [75]
> silver © (11.04.10 20:24) [61]
> что непонятного в
> void foo();
> и чем это хуже
> procedure foo();
Хуже? Кто-то говорил про "хуже"? По каким объективнам критериям сравнивалось?
А вот субъективно, второй вариант лично мне нравится больше. Хотя бы (и именно) наличием ключевого слова "procedure", которое явно и однозначно говорит о том, что за сущность перед нами. Независимо от контекста.
Например int Foo - это кто? Функция без параметров или переменная? Зависит от того, что напишем сразу после... Мелочь, конечно...
По той-же причине мне нравится разделение procedure/function.
Особенно это принципиально для осваивающих новый для себя язык. Проще, не более.
Хотя, принципиального отличия конечно же нет.
Имхо.
← →
Anatoly Podgoretsky © (2010-04-12 08:54) [76]> uw (12.04.2010 08:12:14) [74]
Слушай, ты всех запутал.
Про сон, что не сон
Про не сон, что сон.
← →
Anatoly Podgoretsky © (2010-04-12 08:55) [77]> asail (12.04.2010 08:17:15) [75]
А вот для этого пришлось еще одну допольнительную сущность придумывать, это скобки после.
← →
Virgo_Style © (2010-04-12 10:14) [78]Так как же все-таки читается "void Foo()" ?
← →
oxffff © (2010-04-12 10:28) [79]Войд ФУУ.
← →
Дмитрий Белькевич (2010-04-12 10:32) [80]
> А вот для этого пришлось еще одну допольнительную сущность
> придумывать, это скобки после.
Не плодите сущности сверх необходимого.
Один костыль породил другой.
Страницы: 1 2 3 4 вся ветка
Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.62 MB
Время: 0.064 c