Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
15-1268825050
TUser
2010-03-17 14:24
2010.08.27
Сканируем в принтер!


2-1270625230
stovat
2010-04-07 11:27
2010.08.27
Применение формата для Label


3-1241791675
Rimdus
2009-05-08 18:07
2010.08.27
MSDE использование osql.exe


15-1267253714
Григорьев Антон
2010-02-27 09:55
2010.08.27
Умер Архангельский


2-1273643770
zod2009
2010-05-12 09:56
2010.08.27
Не могу установить компонент





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский