Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Тип 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;
Скачать: CL | DM;

Наверх




Память: 0.64 MB
Время: 0.069 c
11-1206617782
Сашик
2008-03-27 14:36
2010.08.27
Форма с полупрозрачной тенью


15-1269517786
DVM
2010-03-25 14:49
2010.08.27
Забавная SQL Injection


2-1275629001
Sergey2
2010-06-04 09:23
2010.08.27
Service


2-1271777347
TKN
2010-04-20 19:29
2010.08.27
Диаграммы - DBChart


15-1264341586
Kolan
2010-01-24 16:59
2010.08.27
Исходники DMClient а доступны для всех желающих