Помогите пофиксить баги

Обсуждаем контроллеры компании Atmel.
Ответить
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Z_h_e писал(а):Есть подпрограмма. Она ничего не возвращает - ее назвали процедурой.

Есть подпрограмма. Она ничего не возвращает- ее назвали функцией void.
есть подпрограмма. она что-то возвращает. ее назвали функцией.

объясните, с какого бодуна подпрограмма с возвратом и без возврата имеют одно родовое название ФУНКЦИЯ?! этого быть не должно: разные классы должны иметь разное название!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

поясните логическую операцию

( (значение ) лог. опер. (void) f() )

объясните, с какого бодуна подпрограмма с возвратом и без возврата имеют одно родовое название ФУНКЦИЯ?! этого быть не должно: разные классы должны иметь разное название!
Вы же все время терминами кидаетесь. Для меня программа - это программа.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Z_h_e писал(а):поясните логическую операцию
я не могу пояснять ваши фантазии
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Но Вы же поняли что я имел ввиду.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Эиком - электронные компоненты и радиодетали
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

ARV писал(а):по определению функция не имеет права возвращать "ничего" - это исключительная прерогатива процедуры!
по определению процедура не "возвращает ничего" а "ничего не возвращает", не путайте. Первое реализовано в Си, второе в Паскале.
ARV писал(а):к сожалению, это было сделано с отступлением от главного принципа бритвы Оккама - не отрезать нужного. поэтому в итоге получили парадокс, необъяснимый формальной логикой. если не согласны, объясните, не прибегая к ассемблерной реализации, почему результат всякой функции можно присвоить переменной соответствующего типа, а результат void-функции - нельзя? Отцы-основатели языка Си на это отвечают примерно так: "Забей на почему, просто знай это". Согласитесь, что логика в этом месте дает сбой.
Так чем так необходимы процедуры? Можете привести хотя бы одну задачу, где они незаменимы? Ну а про void - ввели особый пустой тип именно как "затычку", показывающую что результат нужно привести к желаемому типу (malloc, например), либо явным образом указать пустоту как в тех же функциях.
объясните, с какого бодуна подпрограмма с возвратом и без возврата имеют одно родовое название ФУНКЦИЯ?! этого быть не должно: разные классы должны иметь разное название!
А зачем их вообще разделять? Они выполняют почти одно и то же, объявляются одинаково, даже устроены почти одинаково. А если уж разделять, то почему именно по возвращаемому значению а не по входному? Кстати, вон в С++ методы не делятся по возвращаемому значению: что void a::b(char x), что char a::c(char x) это не процедуры или функции а методы.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Z_h_e писал(а):Вы же поняли
нет, не понял
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

COKPOWEHEU писал(а):А зачем их вообще разделять?
логика, мой друг, логика!

если вдруг соберетесь отвечать, прошу, сделайте это в следующей последовательности:
1. вы читали статьи, на которые я давал ссылки из википедии?
2. вы согласны с тамошними утверждениями, терминологией и т.п.?
3. вы находите разницу между написанным там и сказанным мной?
4. вы согласны, что в статье про void каждое второе утверждение является исключением из основных правил синтаксиса языка Си?
5. не свидетельствует ли все вышесказанное, что все-таки функция != процедура, даже с учетом странностей языка Си, который по сути все вывел в ранг исключений из правил?

P.S. п.4 - это слегка преувеличение, гипербола - надеюсь, хоть с русским языком у вас все без сомнений хорошо.

P.P.S.
COKPOWEHEU писал(а):процедура не "возвращает ничего" а "ничего не возвращает", не путайте. Первое реализовано в Си, второе в Паскале.
следуя логике синтаксиса языка должна быть возможность пользоваться типом void, как любым другим типом. это невозможно. следуя логике синтаксиса языка функция, возвращающая результат (void - это же результат, по-вашему?), может быть операндом выражения, т.е. находиться правее знака присваивания. это не возможно.

как же вы умудряетесь смириться с этими противоречиями, и утверждать, что никакой разницы между процедурой (по странности названной void-функцией) и функцией (в ее классическом понимании) нет?!
Последний раз редактировалось ARV Сб июл 16, 2016 19:13:45, всего редактировалось 2 раза.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

ARV писал(а):нет, не понял
Не знаю что ответить. Почему для Вас нырок в подпрограмму имеет различие. Называйте это функция, подпрограмма, груздь кузовок
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Z_h_e писал(а):Не знаю что ответить.
вы же не отвечать хотели, а задать вопрос пытались... вот и задайте его так, чтобы он звучал как вопрос, а не был головоломкой или шарадой. я попытаюсь ответить, а вы попытаетесь (ли?) понять...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

ARV писал(а): если вдруг соберетесь отвечать, прошу, сделайте это в следующей последовательности:
1. вы читали статьи, на которые я давал ссылки из википедии?
2. вы согласны с тамошними утверждениями, терминологией и т.п.?
3. вы находите разницу между написанным там и сказанным мной?
4. вы согласны, что в статье про void каждое второе утверждение является исключением из основных правил синтаксиса языка Си?
5. не свидетельствует ли все вышесказанное, что все-таки функция != процедура, даже с учетом странностей языка Си, который по сути все вывел в ранг исключений из правил?
Ох, ладно, раз так хотите по пунктам.
1. Просмотрел
2. По терминологии: поскольку процедура является частным случаем функции (если считаете что это не так - приведите хотя бы один пример, где процедуру нельзя заменить на функцию без изменения остальной программы), введение отдельного термина для них бессмысленно. Логичнее использовать его для недо-процедур из языков низкого уровня, как они и назывались изначально.
4. Использование void:
в качестве возвращаемого значения функции: так же как любой другой тип.
в качестве входного параметра: отличается
в качестве универсального типа: так же.
в качестве типа указателя, нуждающегося в приведении: почти так же. Разве что, поскольку переменные такого типа создавать нельзя, указатель перед использованием обязательно должен быть приведен.
(не указано в статье) в качестве типа переменной: отличается, создание переменных с таким типом недопустимо.
А что вы хотели от типа, введенного специально для страховки от ошибок?
5. Вышесказанное не свидетельствует. Но это не меняет того, что функция и процедура не одно и то же и что любую процедуру можно рассматривать как функцию, но не наоборот.
ARV писал(а):следуя логике синтаксиса языка должна быть возможность пользоваться типом void, как любым другим типом. это невозможно. следуя логике синтаксиса языка функция, возвращающая результат (void - это же результат, по-вашему?), может быть операндом выражения, т.е. находиться правее знака присваивания. это не возможно.
Это особенность не функций, а типа void. Нельзя создать переменную этого типа и для него не определены операторы. Впрочем, это логично: какой смысл присваивать пустоту пустоте. Логично и с другой стороны - тип void создавался для страховки от ошибок, тогда неправильное использование будет вызывать ошибки на этапе компиляции, а не на этапе выполнения.
ARV писал(а): как же вы умудряетесь смириться с этими противоречиями, и утверждать, что никакой разницы между процедурой (по странности названной void-функцией) и функцией (в ее классическом понимании) нет?!
Так покажите противоречия, тогда и будет разговор. Пока что void-функция честно возвращает тип void, а уж его собственное поведение это отдельный разговор.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

я пас - не настолько я Дон Кихот, чтобы воевать с вашими ветряными мельницами до посинения. твердость - отличное качество для лома, но не стану утверждать, что для инженера, тем более программиста.
COKPOWEHEU писал(а):2. По терминологии: поскольку процедура является частным случаем функции
в указанной мной статье ровно наоборот: отношения между процедурой и функцией не дочка-мама, а сестры, а мама у них - подпрограмма. но так как для вас даже "официальные" определения википедии не являются аргументом - кто такой я, чтобы гнуть вас?!

извините, сдаюсь. как говорится, я сделал все, что мог, кто может больше - пусть делает.
Dixi
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

То есть доказательств своей точки зрения не будет? Ладно, но хотя бы приведите пример когда процедура не может быть заменена функцией. А то как двоечник на экзамене - формулу зазубрил а откуда она взялась не понимает.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

COKPOWEHEU писал(а):доказательств своей точки зрения не будет
не будет, ибо кроме собственной зазубренной мантры вы ничего не говорите, не видите и не хотите слышать.

я сделал все, что мог: привел вам примеры, привел противоречия, привел определения из вики - вам все божья роса. как вести диалог со слепым и глухим - я не знаю. вы твердите одно и то же, не взирая на любые несоответствия в логике. ну, так тому и быть.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

Зазубренной? Как раз наоборот, зазубренная у вас (вот уж в чем смысла не вижу, так это зубрить википедию...), я же использую логику.
Термин "подпрограмма" появляется в ассемблере и первых бейсиках для определения выделенных кусков кода, не обладающих еще интерфейсами ввода и вывода. Значит, этот термин можно использовать либо в узком смысле (простейшая недо-процедура), либо в широком (любой выделенный кусок кода, допускающий вызов извне). Мне больше по нраву "узкое" определение.
Термин "процедура" обозначает выделенный кусок кода (подпрограмма в "широком" смысле), обладающий стандартизованным интерфейсом ввода. Подпрограмма не может / не обязана обладать этим интерфейсом, а процедура обязана. То есть он является надмножеством подпрограммы в "узком" смысле.
Термин "функция" обозначает ту же подпрограмму в "широком" смысле, обладающую интерфейсами ввода и вывода. Причем, в отличие от подпрограммы и процедуры обязана обладать обоими интерфейсами. Таким образом функция является надмножеством процедуры и, следовательно, и подпрограммы в "узком" смысле.
Теперь два соображения почему "значением по умолчанию" для подпрограммы стоит считать именно "узкое" определение. Во-первых, подпрограмма в "широком" смысле оказывается синонимом функции, а зачем использовать два названия для одного и того же объекта. Во-вторых, примитивной недо-процедуре, используемой в низкоуровневых языках, тоже хорошо бы дать какое-то название, так почему бы не использовать название "подпрограмма", которое для них всегда применялось.
.
Эти рассуждения можно доказать, пройдя "сверху вниз". Наиболее общий тип - функция, значит ее можно применить вместо процедуры и вместо подпрограммы. Подпрограмма является подмножеством процедур, соответственно должна быть заменима ей в любых случаях. Вызов любой подпрограммы заключается в прыжке на нее с сохранением адреса возврата (это должен обеспечивать компилятор). Описываем в *.c - файле процедуру-функцию, например void func(){}, а в ассемблерном объявляем ее доступной: .extern func. После этого ее вполне можно вызывать как обычную подпрограмму rcall func. Итак, ассемблерная подпрограмма может быть безболезненно заменена процедурой-функцией. Замену процедуры на функцию проще продемонстрировать на Паскале, где они считаются разными структурами.

Код: Выделить всё

procedure proc(var i:integer);
begin
  i:=i+1;
end;
function func(var i:integer):integer;
begin;
  i:=i+1;
  func:=0;
end;
...
var x:integer;
begin
proc(x); func(x);
end.
Как видно, никакой разницы в вызове процедуры и функции нет, а значит процедура может быть в любом случае заменена на функцию.
.
Если в этих рассуждениях есть нестыковки или противоречия, прошу на них указать.
Ну и хотелось бы все-таки хотя бы один пример, опровергающий, что процедура - частный случай функции. Пока что вместо этого было недовольство особенностями языка Си и его спецтипа void.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

COKPOWEHEU писал(а):вот уж в чем смысла не вижу, так это зубрить википедию
википедия сейчас заменяет учебник. раньше ссылались на учебники именитых авторов, приводя из авторитетное мнение в качестве аргумента или подтверждения. сейчас - википедия, которая на 90% состоит из выписок из учебников и других источников, которые можно считать авторитетными.
COKPOWEHEU писал(а):Термин "подпрограмма" появляется в ассемблере и первых бейсиках для определения выделенных кусков кода, не обладающих еще интерфейсами ввода и вывода.
начало верное. любая классификация начинается от прародителя и далее по древовидной структуре расширяется путем выделения наследников прародителя, обладающих большинством свойств предка, но так же наделенными и новыми свойствами. ничего не напоминает? правильно, наследование ООП. так вот, сначала было слово, и слово это было подпрограмма. оно и является отправной точкой всей последующей классификации.
COKPOWEHEU писал(а):этот термин можно использовать либо в узком смысле (простейшая недо-процедура), либо в широком (любой выделенный кусок кода, допускающий вызов извне). Мне больше по нраву "узкое" определение.
по нраву вам или нет, но классификация подразумевает рассмотрение всех классификантов последовательно, от предка к наследнику, и никак иначе. узкий предок или широкий, все охватывает он или не все - не должно влиять на классификацию. в основе всего живого лежит клетка - так она охватывает абсолютно все категории и характеристики живого мира или не все? можно судить и так, и этак, порождая споры. а можно придерживаться другого подхода, очевидно не вызывающего двоякого толкования - клетка есть основа всего живого. и точка. и отсюда пляшем дальше. я давно и упорно настаиваю на аналогичного подхода в выборе исходной точки в наших дебатах - такой точке, беспорность которой очевидна всем. пока что это только один вариант: сначала была подпрограмма - кусок кода, выделенный обособленно для многократного использования при помощи особых вызовов из и возвратов в основную программу. это не может вызвать споров, не так ли? а ваш вариант - может.
COKPOWEHEU писал(а):Термин "процедура" обозначает выделенный кусок кода (подпрограмма в "широком" смысле), обладающий стандартизованным интерфейсом ввода. Подпрограмма не может / не обязана обладать этим интерфейсом, а процедура обязана.
нет, вы передергиваете. формально отличие процедуры от подпрограммы заключается в том, что она МОЖЕТ иметь интерфейс обмена данными, но не обязана. простейший пример из паскаля: procedure init; - нет ни входных, ни выходных параметров, т.е. нет интерфейса. если перестаните притягивать за уши несущественные особенности в качестве существенных, мы никогда не кончим спор.
COKPOWEHEU писал(а):То есть он является надмножеством подпрограммы в "узком" смысле.
каким надмножеством?! классификация всегда рассматривается от начала к концу, и никакой рекурсии или возврата к вышестоящему уровню не допускает! процедура вышла из подпрограммы - все, точка. обобщающий термин породил частный случай. какие могут быть иные подходы?!
COKPOWEHEU писал(а):Термин "функция" обозначает ту же подпрограмму в "широком" смысле, обладающую интерфейсами ввода и вывода. Причем, в отличие от подпрограммы и процедуры обязана обладать обоими интерфейсами.
нет, опять передергивание! функция обязана иметь только один интерфейс вывода результата своей работы! только один! именно наличие этого неотъемлемого свойства и отличает ее от всех прочих членов множества подпрограмм! это ведь очевидно! представить себе функцию без параметров легко, представить себе функцию без результата - невозможно (это будет процедура).
COKPOWEHEU писал(а):Теперь два соображения почему "значением по умолчанию" для подпрограммы стоит считать именно "узкое" определение. Во-первых, подпрограмма в "широком" смысле оказывается синонимом функции, а зачем использовать два названия для одного и того же объекта.
вы умудряетесь противоречить сам себе, не считая противоречий логике и здравому смыслу! ранее вы говорили о приверженности узких толкований, тут аппелируете к широким. изначально функция родилась из ранее существовавших подпрограмм, и никакого иного отношения между этими категориями быть не может! поэтому хотя наследники зачастую превосходят по своим функциям и возможностям предков, они не являются эквивалентами предков! вы можете быть в 100 раз умнее неандертальца, но вы - совсем другой вид, вы никак не можете считаться "множеством, охватывающим и возможности неандертальцев", хотя справитесь с любыми задачами, ставившими вашего предка в тупик. не смешивайте в кучу все, придерживайтесь последовательной логики.
COKPOWEHEU писал(а):Наиболее общий тип - функция
если бы это было наиболее общим типом, то оно исторически появилось бы раньше и в процессе эволюции породило бы появление других, более простых наследников - согласно вашей логике. но вся теория развития возражает вам! именно в процессе развития появляются более сложные, более гибкие и обладающие большими возможностями типы [функций], но не наоборот, из сложного путем деградации рождаются примитивные!
COKPOWEHEU писал(а):Если в этих рассуждениях есть нестыковки или противоречия, прошу на них указать.
достаточно ли я указал вам на противоречия в ваших суждениях? или вы снова скажете, что философские правила и методы поиска истины мне чужды, и я пойду своим путем? вы вообще философию изучали в ВУЗе? не марксистско-ленинскую, а обычную, науку о методах познания?
COKPOWEHEU писал(а):хотелось бы все-таки хотя бы один пример, опровергающий, что процедура - частный случай функции.
цыпленок - частный случай курицы. однако цыплята бывают петушки и курочки - и они оба суть курица. вы меня втягиваете в спор о глупостях вроде "если курица способна родить петуха, можно ли считать, что она заменит его? "

давайте рассуждать без применения Си, паскаля и т.п. языковых реализация функций и процедур, обратимся к матери всех наук - математике. математическая функция и по записи и по действию суть аналог рассматриваемой нами проблемы. грубо говоря, в математике функция - это подстановка некоего числа, аналитически получающегося абсолютно однозначно из некоего множества других чисел. итак, признаки функции:
- всегда есть число, подстанавливаемое вместо записи функции в нужное место
- может быть некоторое множество (в том числе пустое) чисел, определяющих это самое число для подстановки
- существует однозначная связь между множеством входных чисел и единственным выходным
теперь попробуем найти в математике аналог процедуры. думаете, его нет? он есть. это - алгоритм, т.е. последовательность действий для решения, например, квадратного уравнения. в этом алгоритме используется несколько формул, которые отлично попадают по всем признакам в определение функции! то есть алгоритм использует более низшее по иерархии понятие функции! не смотря на то, что сама по себе функция благодаря третьему своему отличительному признаку тоже является алгоритмом!

а теперь зададим главный вопрос: математические процедуры и функции - это эквиваленты друг друга? могут ли одни быть заменены другими? может ли функция, в частности, всегда заменить алгоритм, т.е. процедуру? ответ, по-моему, очевиден: существует масса задач, которые не могут быть решены никакой одной функцией, сколь сложной она ни была бы! т.к. математика - наука абстракций, для подтверждения своего утверждения мне придется прибегнуть к физике: задача движения трех тел в поле тяготения, если мне не изменяет память, это предельная задача, решаемая аналитически, т.е. по формуле. уже для 4-х тел не существует этого решения, чего уж говорить о пяти и более! но алгоритмы решения этих задач существуют!!! т.е. последовательность действий известна, а готовой функции не существует.

теперь к нашим баранам.
язык программирования - это не философское понятие (хотя может быть подвергнуто анализу по принципам философии), а достаточно убогая реализация формального описания человеческой логики для ее повторения электронными машинами. поэтому в языках программирования существует масса всяких противоречий, возникающих из того, что убогими инструментами сложно повторить бесконечную многогранность мира. для узких задач, решаемых языками программирования, можно пренебрегать этими противоречиями, просто имея их ввиду. можно пытаться бороться с ними, порождая противоречия более высоких порядков. наверное, существуют и другие варианты...
но одно должно быть неизменно: логика не должна страдать при любых обстоятельствах. если логика страдает (а это проявляется во всяких исключениях из общих правил, наличии "особых" случаев, оговорках об области применимости и т.п.) - это плохой признак. история развития языка Си - это история противоречий, для устранения которых использовались наспех придуманные затычки, которые, как затем выяснялось, рвали тонкую ткань логики языка еще больше, в итоге придумывали все новые и новые заплатки, и т.д. тип void - это живой пример того, как изначально ущербная логика синтаксиса потребовала введения полностью абстрактного, не имеющего никаких осмысленных толкований, объекта void с типом void! древние греки придумали вакуум, как эквивалент именно полного отсутствия чего-либо, но, как все-таки ясно теперь, полного отсутствия чего бы то ни было вообще не существует! кроме как в Си (точнее, в программировании вообще), где еще и существует конкретное местоположение этого "ничего" - (void*)!

кстати, функция всегда сможет заменить процедуру только если мы примем априори, что результат функции МОЖНО ИГНОРИРОВАТЬ. т.е. снова согласимся с исключением из правил, опровергающим основное назначение функции - устанавливать связь одного выходного числа с множеством других, входных. т.е. все ваши утверждения будут верны только в условиях искаженной логики: если основным желаемым эффектом функции "построить дом" для вас будет расходование кирпича и цемента, то разумеется, не надо переживать о том, что готовый дом можно просто стереть в порошок за ненадобностью.

Для программирования все эти философские противоречия не играют особой роли, ввиду убогости выразительных средств. В сущности, эти акценты языка Си нам не мешают писать и понимать программы. Но кода выясняется, что и наша мозговая логика подстроилась под убогие средства языка Си так, что уже не может видеть глубокую разницу между процедурой и функцией, не видит явных противоречий в "возврате ничего" - это плохо.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Не читал Ваш последний пост, наверняка что-то упустил.

Оставим машинную реализацию компилятора функции и процедуры, как Вы и предлагали.

ARV, Вы утверждаете что есть разница между функцией возвращающей ничего и процедурой ничего не возвращающей. Я на данный момент не вижу разницы.
Прошу Вас привести пример, видимо смешав языки программирования, где одна конструкция (например функция void) не допускает применения другой (например процедуры). Допустим Вы применили функцию void в Си, но процедуру в Паскале никак нельзя использовать так же. Тогда Вы убедите меня что это разные вещи и я с удовольствием пополню свой багаж знаний.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Z_h_e писал(а):Не читал Ваш последний пост, наверняка что-то упустил
очень жаль, очень. потому что вы спорите сам с собой, думая, что со мной.
Z_h_e писал(а):ARV, Вы утверждаете что есть разница между функцией возвращающей ничего и процедурой ничего не возвращающей.
никогда такого не было! наоборот, в моем представлении функция, возвращающая ничего - есть нонсенс, она должна называться процедурой.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Мудрый кот
Аватара пользователя
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

Любопытная дискуссия.
Как выпускник профильного факультета я полностью согласен с ARV.

COKPOWEHEU, твои рассуждения о появлении терминов связанное с конкретными языками программирования - это от частного к общему...
И, как мне кажется, критерий в основе классификации у тебя другой.
Подпрограмма - повторяющиеся действия в алгоритме. Критерий, свойство непосредственно "кусочка" алгоритма - повторяемость.
А ты исходишь из критерия функциональности способа вызова повторяющегося фрагмента. Т.е. самый навороченный способ вызова повторяющегося фрагмента будет охватывать все возможные случаи/потребности и поэтому он самый-самый. Ну, как бы, да, функция с параметрами все случаи будет охватывать. Но, типа, пофиг, что где-то результат возвращать не надо, а где-то параметров на вход нет. Вот это "пофиг" как раз и вносит всякие исключения и алогичности/нестыковки в Си. Т.е. имеется классификация отвязанная от реализации, и она строгая и чёткая, а есть реализации конкретных языков, где есть "косяки" связанные с идеологией заложенной в язык. Об этом тебе и толкуют.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Kavka писал(а):Как выпускник профильного факультета я полностью согласен с ARV
вот спасибо! а то я уж начал сомневаться, что не сплю... но ведь один сон двум людям не может сниться...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

очень жаль, очень. потому что вы спорите сам с собой, думая, что со мной.
Вы же в нем не ко мне обращались.

Свое умение изменять размер и цвет шрифта показывать мне совсем не обязательно. Ваше красное высказывание не ко мне, пишите разработчикам стандарта Си.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Ответить

Вернуться в «AVR»