Comments 42
UFO just landed and posted this here
Вот за такое я и не люблю плюсы:
Код программы должен читаться как книга, а не как… это…
void (*signal(int, void (*fp)(int)))(int);
Код программы должен читаться как книга, а не как… это…
Я боюсь С++, если там ТАК нужно читать каждую строку кода…
Спасибо!
Внятно написано. Попробовал — отнимает больше времени, но в запутанных выражениях чужих исходников реально помогает понять, что же наворотил автор…
Внятно написано. Попробовал — отнимает больше времени, но в запутанных выражениях чужих исходников реально помогает понять, что же наворотил автор…
Если пользоваться typedef в таких случаях, то жизнь упрощается)
Не даром говорят, что С++ is write only
Не знаю где вы тут С++ увидели.
Тут Си, язык продуманный до мелочей.
Статься бесполезна.
Я с самого рождения могу прочесть любое объявление на Си без каких-либо раздумий.
Для тех, кто таким даром не обладает, Керниган и Ритчи написали целую страницу.
Называется она — «Сложные объявления».
Мне вот интересно. Как метод автора справится с char (*(*x[3])())[5]
А по поводу С++ согласен с вами. write only язык.
Тут Си, язык продуманный до мелочей.
Статься бесполезна.
Я с самого рождения могу прочесть любое объявление на Си без каких-либо раздумий.
Для тех, кто таким даром не обладает, Керниган и Ритчи написали целую страницу.
Называется она — «Сложные объявления».
Мне вот интересно. Как метод автора справится с char (*(*x[3])())[5]
А по поводу С++ согласен с вами. write only язык.
Ну холивар C vs C++ это явно не тема этого топика.
Имхо статья подает ту самую страницу из K&R в более запоминающейся форме.
Да и с вашим примером метод вроде справляется, или я что-то не понял подвоха?
Имхо статья подает ту самую страницу из K&R в более запоминающейся форме.
Да и с вашим примером метод вроде справляется, или я что-то не понял подвоха?
думаю если хорошенько расставить скобки, пробелы, а может даже и переносы строки, то третий пример будет намного читабельнее
Есть даже тул для этого написанный. Называется cdecl (http://gd.tuwien.ac.at/linuxcommand.org/man_pages/cdecl1.html). И у него даже есть онлайн версия (http://cdecl.org/).
После нескольких дней чтения исходников всяких gnome-овских приложений окончательно убедился, что Си — это ад. Но за статью спасибо, очень доступно. Хотя думаю после недельных перерывов без С++ по-прежнему буду входить в ступор при виде 'char * const' и 'const char*' :)
Нытики и неосиляторы детектед. Вполне себе краткая и компактная запись, после некоторой практики читается на ура.
Используйте typedef-ы, и забейте на эти объявления
Что хочется отметить. Статья вовсе не про С++.
Все приведенные примеры — чистый Си.
Да, конечно С++ позволит вам написать те же самые конструкции, но… тем не менее на С++ так обычно не пишут. Обычно так пишут как раз на Си.
Пример номер 3, как уже отмечали — пример плохого кода. Этот код сложно:
1. Читать
2. Понимать
3. Исправлять
4. Дополнять.
Я понимаю, что автор кода преодолеет все 4 указанные сложности, но если он этот код передает другому человеку (коллективная разработка), то код становится источником постоянных ошибок и фиксов.
Все приведенные примеры — чистый Си.
Да, конечно С++ позволит вам написать те же самые конструкции, но… тем не менее на С++ так обычно не пишут. Обычно так пишут как раз на Си.
Пример номер 3, как уже отмечали — пример плохого кода. Этот код сложно:
1. Читать
2. Понимать
3. Исправлять
4. Дополнять.
Я понимаю, что автор кода преодолеет все 4 указанные сложности, но если он этот код передает другому человеку (коллективная разработка), то код становится источником постоянных ошибок и фиксов.
Функция, принимающая указатель на функцию и возвращающая указатель на функцию — это действительно ultimate.
Хотя где-нибудь запросто может использоваться, например при построении ООП на C (виртуальный метод для данного метода).
Хотя где-нибудь запросто может использоваться, например при построении ООП на C (виртуальный метод для данного метода).
UFO just landed and posted this here
Прикольно
Замечательно конечно. Но именно такие вещи как правило и отталкивают.
Лютвидж Доджсон(aka Льюис Кэрролл) не застал все эти компьютеры и языки программирования. Его код и методы разработки особенно интересно было бы читать…
Лютвидж Доджсон(aka Льюис Кэрролл) не застал все эти компьютеры и языки программирования. Его код и методы разработки особенно интересно было бы читать…
Sign up to leave a comment.
Правило чтения по спирали