язык C: неизвестное о известном
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
язык C: неизвестное о известном
Вот ненароком, не планируемо и попутно сложилась любопытная тема: язык C в Linux: вопросы начального уровня.
Началось обсуждение как подборка некоторых учебных примеров кода, обращающих внимание на всякие тонкости языка C, на которые хотелось бы обратить внимание начинающих ... напимер:
- различные представления одних и тех же данных в RAM когда на них накладываются предположения различной типизации;
- запись бесконечных циклов (в разной форме) и предпочтительность бесконечных циклов традиционным с условиями в заголовках;
- запись циклов без тела (когда все действия записаны в условиях);
и т.п.
Т.е., это отчасти элементы трюков ... но их хорошо бы научиться видеть, замечать, и понимать в коде.
Но дальше этот набор ... "задрочек", простите за выражение, расширялся, обсуждение уже перевалило за 6 страниц форума, и начало дополняться такими подробностями, что не всегда упоминаются в широкой литературе...
Так что и название темы "вопросы начального уровня" уже перестало соответствовать наполнению ... но не менять же название?
Теперь это уже ... что-то типа: "реализация на C всяких тонких возможностей".
Ну что ещё вообще можно сказать нового про язык C???, которого год рождения - 1969г., год зрелости - 1973г., на котором написано кода больше чем на любом другом языке отдельно взятом (все UNIX-like OS + весь GNU софт + множество свободных проектов + ...)
Оказывается - можно ... т.е. не то, чтобы "нового", а:
- ... такого, что появилось в более поздних стандартах (C99): complex и long double типы значений и др. - что не упоминается в учебниках 20-30 летней давности и 10-го издания, по которым все и учатся ... и о том как эти типы можно использовать куда более широко - тот же complex как представление 2D-координат точек ... чем, по существу, числа complex и являются;
- ... того, что сложилось как "тенденция" последних лет ... например использование циклических двухсвязных списков везде в ядре Linux, вместо самых разнообразных (линейных односвязных и др.) списков, которые и описываются везде в книгах ... и это (из kernel Linux) очень здоровая тенденция, строить на таких списковых структурах любые ссылочные (динамические) структуры;
- ... то, что не является какой-то спецификой С, а есть свойством (почти) любого языка программирования - это уже уже из области алгоритмики ... но на что недостаточно обращают внимание излагая C: использование рекурсии, нисходящая и восходящая рекурсии, оценка достижимой погрешности при итерационных вычислениях и т.п.
В теме их 6-ти страниц обсуждения множество примеров кода на все эти случаи ... большинство из этих примеров достаточно детально там обсуждается.
Рекомендую поглядеть в тему язык C в Linux: вопросы начального уровня.
... и указать на ещё какие тонкие моменты (как языка так и алгоритмики), которые следовало бы иллюстрировать показательными примерами кода.
Началось обсуждение как подборка некоторых учебных примеров кода, обращающих внимание на всякие тонкости языка C, на которые хотелось бы обратить внимание начинающих ... напимер:
- различные представления одних и тех же данных в RAM когда на них накладываются предположения различной типизации;
- запись бесконечных циклов (в разной форме) и предпочтительность бесконечных циклов традиционным с условиями в заголовках;
- запись циклов без тела (когда все действия записаны в условиях);
и т.п.
Т.е., это отчасти элементы трюков ... но их хорошо бы научиться видеть, замечать, и понимать в коде.
Но дальше этот набор ... "задрочек", простите за выражение, расширялся, обсуждение уже перевалило за 6 страниц форума, и начало дополняться такими подробностями, что не всегда упоминаются в широкой литературе...
Так что и название темы "вопросы начального уровня" уже перестало соответствовать наполнению ... но не менять же название?
Теперь это уже ... что-то типа: "реализация на C всяких тонких возможностей".
Ну что ещё вообще можно сказать нового про язык C???, которого год рождения - 1969г., год зрелости - 1973г., на котором написано кода больше чем на любом другом языке отдельно взятом (все UNIX-like OS + весь GNU софт + множество свободных проектов + ...)
Оказывается - можно ... т.е. не то, чтобы "нового", а:
- ... такого, что появилось в более поздних стандартах (C99): complex и long double типы значений и др. - что не упоминается в учебниках 20-30 летней давности и 10-го издания, по которым все и учатся ... и о том как эти типы можно использовать куда более широко - тот же complex как представление 2D-координат точек ... чем, по существу, числа complex и являются;
- ... того, что сложилось как "тенденция" последних лет ... например использование циклических двухсвязных списков везде в ядре Linux, вместо самых разнообразных (линейных односвязных и др.) списков, которые и описываются везде в книгах ... и это (из kernel Linux) очень здоровая тенденция, строить на таких списковых структурах любые ссылочные (динамические) структуры;
- ... то, что не является какой-то спецификой С, а есть свойством (почти) любого языка программирования - это уже уже из области алгоритмики ... но на что недостаточно обращают внимание излагая C: использование рекурсии, нисходящая и восходящая рекурсии, оценка достижимой погрешности при итерационных вычислениях и т.п.
В теме их 6-ти страниц обсуждения множество примеров кода на все эти случаи ... большинство из этих примеров достаточно детально там обсуждается.
Рекомендую поглядеть в тему язык C в Linux: вопросы начального уровня.
... и указать на ещё какие тонкие моменты (как языка так и алгоритмики), которые следовало бы иллюстрировать показательными примерами кода.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: язык C: неизвестное о известном
Заглянул ненароком на C (Си).Olej писал(а):Так что и название темы "вопросы начального уровня" уже перестало соответствовать наполнению ... но не менять же название?
Теперь это уже ... что-то типа: "реализация на C всяких тонких возможностей".
Там студенты в большинстве ... что-то пишут.
Сказать что это "мрак" - это значит ничего не сказать вовсе.
Но это значит, что такой вот уровень преподавателей, которые их учат.
... какой и уровень формулирования задач, даже, которые задают для проработки.
Жуть!
- Svitlanija
- Интересующийся
- Сообщения: 3
- Зарегистрирован: 10 дек 2013, 13:33
- Откуда: Россия
- Контактная информация:
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Ответ
Я так понимаю, что это стёб, чтоб пройти предмодерацию?Svitlanija писал(а):Прикольно... надо будет попробовать.
Но так же легко пользователь Svitlanija будет и удалён, без любого уведомления, и с запретом IP на последующую регистрацию
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Ответ
Сделал я совершенно предварительную редакцию текста (16 стр.) и архив примеров по материалам этих обсуждений.Svitlanija писал(а):Прикольно... надо будет попробовать.
Это ещё будет существенно меняться ... но для предварительного чтения годится.
- Вложения
-
- c_details_05.odt
- (85 КБ) 596 скачиваний
-
- c.tgz
- (7.87 КБ) 624 скачивания
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Ответ
Кого заинтересуют более свежие версии - вам сюда : Язык C: заметки на поляхOlej писал(а):Сделал я совершенно предварительную редакцию текста (16 стр.) и архив примеров по материалам этих обсуждений.Svitlanija писал(а):Прикольно... надо будет попробовать.
Это ещё будет существенно меняться ... но для предварительного чтения годится.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Ответ
Этот текст, с некоторыми досадными для меня сокращениями, будет со дня на день опубликован в виде 3-х последовательных статей на IBM developerWorks - я им уже и корректуру после редактора вернул...Olej писал(а):Сделал я совершенно предварительную редакцию текста (16 стр.) и архив примеров по материалам этих обсуждений.Svitlanija писал(а):Прикольно... надо будет попробовать.
Это ещё будет существенно меняться ... но для предварительного чтения годится.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Ответ
08.04.2014 :Olej писал(а):Этот текст, с некоторыми досадными для меня сокращениями, будет со дня на день опубликован в виде 3-х последовательных статей на IBM developerWorks - я им уже и корректуру после редактора вернул...Olej писал(а):Сделал я совершенно предварительную редакцию текста (16 стр.) и архив примеров по материалам этих обсуждений.Svitlanija писал(а):Прикольно... надо будет попробовать.
Это ещё будет существенно меняться ... но для предварительного чтения годится.
Малоизвестные возможности и последние нововведения в языке C. Часть 1. Компилятор GCC и новые типы данных
09.04.2014 :
Малоизвестные возможности и последние нововведения в языке C. Часть 2. Точность вычислений и локализация в приложениях на языке С
Малоизвестные возможности и последние нововведения в языке C. Часть 3. Передача и возврат значений из функций и компилятор Clang
P.S. Ну и названия же они выдумывают!
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: язык C: неизвестное о известном
Новая публикация о малоизвестных расширениях C & C++, кое-что может быть полезным, кое-что любопытно или смешно :
Расширения языков C и C++. Часть 1
Читайте.
Расширения языков C и C++. Часть 1
Читайте.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей