|
Непонятный typedef |
|
|
|
Oct 15 2009, 11:30
|
Местный
  
Группа: Участник
Сообщений: 338
Регистрация: 1-02-06
Из: Королев, М.О.
Пользователь №: 13 846

|
Столкнулся вот с таким переопределением типа: Код typedef void (* sys_timeout_handler)(void *arg); (Это из стека lwIP) И никак не могу понять, что же из себя представляет переменная h, объявленная как Код sys_timeout_handler h; Буду признателен за подсказку.
--------------------
-Да как так-то?/-Да как-то так/-Ну так-то да
|
|
|
|
|
 |
Ответов
|
Oct 16 2009, 03:52
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(GetSmart @ Oct 15 2009, 20:42)  Процедуры и функции и прочее - это алгоритмические еденицы. Они есть везде, где есть алгоритмы. Да? А вот в языке Verilog, например, есть function и task, процедуров не завезли.  Как быть? Нет в языке С процедур. Есть только функции. Это вопрос о терминах. Если хотите, чтобы вас однозначно понимали в какой-то предметной области, будьте добры корректно употреблять легальные устоявшиеся термины. В языке программирования С нет процедур. И в языке программирования С++ нет процедур. В нем же функции-члены классов - это функции члены классов, а не методы, как их многие называют. Методы в С++ - это виртуальные функции. В другом языке, возможно, корректно называть любые функции-члены методами. Но не в С++. Когда я вижу в контексте С++ слово метод, у меня сразу включается восприятие полиморфного поведения данной функции. И очень неприятно потом узнавать, что это была обычная функция-член. Некорректное употребление терминологии - источник для путаницы. И замечание было сделано совершенно уместно. Цитата(GetSmart @ Oct 15 2009, 20:42)  Видимо проблема растёт из "нового" образования в школах/вузах. Раньше, когда в обязательном порядке изучали Паскаль ни у кого бы не возникло отторжение понятия процедуры. Проблема растет из недостаточного знания матчасти и/или небрежного отношения мелочам. И это зря. "Профессионал отличается от любителя отработкой мелочей" (с).
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Oct 16 2009, 10:15
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(dxp @ Oct 16 2009, 09:52)  Да? А вот в языке Verilog, например, есть function и task, процедуров не завезли.  Как быть? Сэкономили  Цитата(dxp @ Oct 16 2009, 09:52)  Нет в языке С процедур. Есть только функции. Это вопрос о терминах. Если хотите, чтобы вас однозначно понимали в какой-то предметной области, будьте добры корректно употреблять легальные устоявшиеся термины. В языке программирования С нет процедур. И в языке программирования С++ нет процедур. ... Проблема растет из недостаточного знания матчасти и/или небрежного отношения мелочам. И это зря. "Профессионал отличается от любителя отработкой мелочей" (с). Поддерживаю тезис ARV, что профессионал видит в первую очередь суть. Вы когда вызываете "процедуру" написанную к примеру на асме или ещё на чём в "ступор" не входите? А то ведь как можно вызвать из Си то, чего нет?  Не стану критиковать создателей Си за кастрацию, но лично я, уж точно не чайник в программировании, намеренно дифференцирую процедуры и функции. И меня немного коробит (хотя иногда пользуюсь) когда применяют функцию (именно функцию), а результат никуда не используют. Во всяком случае эта ситуация обращает на себя внимание на подсознательном уровне. И я даже рад, что меня в вузе учили именно разделять алгоритмические еденицы на процедуры и функции. В этом есть смысл. Во всяком случае я знаю достаточно хорошо и Си и Паскаль и не впадаю в ступор, когда одна и та же алг. еденица называется в стандартах разных языков по-разному.
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Oct 16 2009, 13:08
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(GetSmart @ Oct 16 2009, 17:15)  Поддерживаю тезис ARV, что профессионал видит в первую очередь суть. Профессионал прежде всего умеет четко и ясно излагать свои мысли, так, чтобы не возникало неоднозначностей при восприятии. Цитата(GetSmart @ Oct 16 2009, 17:15)  Вы когда вызываете "процедуру" написанную к примеру на асме или ещё на чём в "ступор" не входите? А где на асме процедуры? Что там понимается под процедурой? Сначала определите термины четко, потом на их основе излагайте информацию. На асме такого рода терминов вообще мало. То, что вы подразумеваете под "процедурой" на асме называется, как правило, "подпрограммой" (subroutine). Это куда более уместный термин. И более устоявшийся. Надо полагать, по этой самой причине. Цитата(GetSmart @ Oct 16 2009, 17:15)  Не стану критиковать создателей Си за кастрацию, но лично я, уж точно не чайник в программировании, намеренно дифференцирую процедуры и функции. И меня немного коробит (хотя иногда пользуюсь) когда применяют функцию (именно функцию), а результат никуда не используют. А с чего вы взяли, что функция должна что-то возвращать? Функция (в общем случае) по смыслу - это реализация какого-то действия. И ее значение определяется контекстом. В математике функция - это одно, в руководстве по эксплуатации на какой-нибудь прибор - другое (функция прибора - что она может возвращать?), в языке программирования Паскаль - третье, в языке программирования С - четвертое. Над вами довлеет Паскаль, и вы пытаетесь притянуть объекты из других областей к паскальной терминологии. Цитата(GetSmart @ Oct 16 2009, 17:15)  Во всяком случае эта ситуация обращает на себя внимание на подсознательном уровне. И я даже рад, что меня в вузе учили именно разделять алгоритмические еденицы на процедуры и функции. В этом есть смысл. Во всяком случае я знаю достаточно хорошо и Си и Паскаль и не впадаю в ступор, когда одна и та же алг. еденица называется в стандартах разных языков по-разному. Речь не о ступоре, а о некорректном использовании терминов, что вносит просто путаницу и затрудняет восприятие/общение. Люди оперируют понятиями. Понятие - это однозначное отображение образа и его лексического выражения (т.е. словами). Когда человек слышит слово (словосочетание), то в его мозгу происходит процесс поиска соответствующего образа - если образ найден, то возникает понимание слова. Если образ не найден или обнаружена неоднозначность - т.е. найдено более одного образа и выбор не произведен, то понимания не возникает. Кстати, слово "сообразить", смысл которого вполне ясен, как раз и отражает этот процесс - когда образ уловил, так сразу и понимание возникло, что это слово и обозначает. Пример. Слово "лук". Это что? Лук репчатый? Или лук для стрельбы? Поэтому всегда важен контекст, на основе которого и происходит выборка правильного образа - в кулинарной книге образ будет один, а в книжке про Робина Гуда - второй. В нашем случае, если слово "процедура" употребляется в контексте языка Паскаль, то у меня оное слово вызывает образ вызываемого исполняемого кода, не возвращающего значения. В контексте языка С/C++ слово "процедура" вызывает совсем иной образ - например, "процедура обмена сигнатурами..." или "процедура подготовки данных...", т.е. это обозначение алгоритмической единицы, но не языка, а непосредственно алгоритма программы. И когда в этом контексте излагающий под "процедурой" имеет в виду паскальную процедуру, то это вызывает неоднозначность, и приходится тратить дополнительные усилия на то, чтобы по дополнительным элементам контекста понять, что в данном случае имелось в виду - часть алгоритма или элемент языка программирования. Ну, и зачем это? Ведь это не что иное как намеренное (пусть в большинстве случаев и неосознанное) внесение путаницы безо всякой причины. Поэтому я и стою за строгость в определении терминов и их корректное использование. И ступор тут совершенно не причем. В большинстве случаев можно понять, что именно имелось в виду. Но это объективно потребует дополнительных усилий. И профессионализм тут как раз не в умении расшифровывать неоднозначности, а в умении подавать информацию так, чтобы ни у кого - даже начинающего - не возникло никаких разночтений. У вас процесс восприятия происходит точно так же, как у всех: Цитата(GetSmart @ Oct 16 2009, 17:15)  Во всяком случае эта ситуация обращает на себя внимание на подсознательном уровне. Т.е. как раз и ищется соответствие слова и образа. Только вот контекст в некоторых случаях выбран неверно - при рассмотрении вопросов программирования на С, контекст восприятия у вас паскальный.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
Сообщений в этой теме
Harvester Непонятный typedef Oct 15 2009, 11:30 GetSmart Цитата(Harvester @ Oct 15 2009, 17:30) И ... Oct 15 2009, 11:33 Harvester Цитата(GetSmart @ Oct 15 2009, 14:33) Под... Oct 15 2009, 11:47 andrew_b Цитата(GetSmart @ Oct 15 2009, 15:33) h -... Oct 15 2009, 11:50  GetSmart Цитата(andrew_b @ Oct 15 2009, 17:50) На ... Oct 15 2009, 11:52   andrew_b Цитата(GetSmart @ Oct 15 2009, 15:52) про... Oct 15 2009, 12:04    kurtis Цитата(andrew_b @ Oct 15 2009, 15:04) В... Oct 15 2009, 12:08    GetSmart Цитата(andrew_b @ Oct 15 2009, 18:04) В... Oct 15 2009, 12:10     andrew_b Цитата(GetSmart @ Oct 15 2009, 16:10) Не ... Oct 15 2009, 12:36      GetSmart Цитата(andrew_b @ Oct 15 2009, 18:36) К ч... Oct 15 2009, 13:07       andrew_b Цитата(GetSmart @ Oct 15 2009, 17:07) Дор... Oct 15 2009, 13:23        demiurg_spb Цитата(andrew_b @ Oct 15 2009, 17:23) Реч... Oct 15 2009, 16:03 kurtis Цитата(Harvester @ Oct 15 2009, 14:30) Ст... Oct 15 2009, 11:52 Flexz Давным-давно в паскале процедурой называлась функц... Oct 15 2009, 12:12 zltigo Цитата(Flexz @ Oct 15 2009, 15:12) Давным... Oct 15 2009, 12:31 sigmaN Да все знают. И ответ топикстартеру был понятен.
П... Oct 15 2009, 12:55 _Pasha Цитата(sigmaN @ Oct 15 2009, 15:55) Да вс... Oct 15 2009, 15:12  GetSmart Цитата(_Pasha @ Oct 15 2009, 21:12) Кодvo... Oct 16 2009, 21:20  AHTOXA Цитата(dxp @ Oct 16 2009, 09:52) В нем же... Oct 16 2009, 07:57   dxp Цитата(AHTOXA @ Oct 16 2009, 14:57) Первы... Oct 16 2009, 08:43    AHTOXA Ясно, спасибо. Замечу всё же, что "иногда наз... Oct 16 2009, 09:12     dxp Цитата(AHTOXA @ Oct 16 2009, 16:12) Ясно,... Oct 16 2009, 10:09      AHTOXA Цитата(dxp @ Oct 16 2009, 16:09) Ключевое... Oct 16 2009, 10:20       dxp Цитата(AHTOXA @ Oct 16 2009, 17:20) Откуд... Oct 16 2009, 13:41        AHTOXA Цитата(dxp @ Oct 16 2009, 19:41) Т.е. ООП... Oct 16 2009, 15:44         AHTOXA Цитата(AHTOXA @ Oct 16 2009, 21:44) Всё р... Oct 16 2009, 21:20         dxp Цитата(AHTOXA @ Oct 16 2009, 22:44) Всё р... Oct 17 2009, 05:31          AHTOXA Цитата(dxp @ Oct 17 2009, 11:31) Если он ... Oct 17 2009, 08:49           dxp Цитата(AHTOXA @ Oct 17 2009, 15:49) Если ... Oct 17 2009, 12:46            AHTOXA Цитата(dxp @ Oct 17 2009, 18:46) P.S. Что... Oct 17 2009, 14:14    GetSmart Цитата(dxp @ Oct 16 2009, 19:08) А где на... Oct 16 2009, 13:29    GetSmart Цитата(dxp @ Oct 16 2009, 19:08) Речь не ... Oct 16 2009, 14:29     _Pasha Цитата(GetSmart @ Oct 16 2009, 17:29) Это... Oct 16 2009, 19:18 GetSmart Дайте _Pashе медаль. И ещё одну, за занудство Oct 15 2009, 15:22 ARV имхо, профессионалу наплевать, как обозвать структ... Oct 16 2009, 04:33 dxp Цитата(ARV @ Oct 16 2009, 11:33) имхо, пр... Oct 16 2009, 06:24  GetSmart Цитата(dxp @ Oct 16 2009, 12:24) Угу. Дав... Oct 16 2009, 10:24 GetSmart Спрашивается - зачем так настойчиво выяснять разли... Oct 18 2009, 03:17 dxp Цитата(GetSmart @ Oct 18 2009, 10:17) Спр... Oct 18 2009, 04:07  GetSmart Цитата(dxp @ Oct 18 2009, 10:07) Путаница... Oct 18 2009, 06:32
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|