Дэнни Калев (Danny Kalev), бывший член комитета по утверждению стандартов C++, предложивший множество улучшений, вошедших в последние стандарты по языкам Си и Си++, опубликовал статью (http://blog.smartbear.com/software-quality/bid/173187/C11-A-...) с обзором нововведений, вошедших в стандарт C11 (ISO / IEC 9899:2011), а также оценкой общих тенденций развития языка Си за последние 13 лет с момента выхода предыдущего стандарта C99.
Рассмотрены такие возможности, как средства для обеспечения многопоточности, анонимные структуры и объединения, _Generic, _Noreturn, управление выравниванием выделяемой памяти (aligned_alloc), поддержка Unicode, статические утверждения (Static assertions), средства для проверки допустимых границ и диапазонов значений, удаление функции gets() и новый интерфейс fopen().URL: http://blog.smartbear.com/software-quality/bid/173187/C11-A-...
Новость: http://www.opennet.me/opennews/art.shtml?num=34184
Вопрос не по теме:
Что посоветуете хорошее почитать по Си, на русском?
Если для совсем новичков, то "Андрей Богатырев. Руководство полного идиота по программированию (на языке Си)". Объясняет самые основы, зато реально простым языком.
Спасибо, но я скорее приобрету "Руководство умного человека по программированию (на языке Си)", т.к. не ожидаю услышать от "полных идиотов" умных мыслей.
Не нужно так тянуть с изучением Си. Долгие поиски даже самой лучшей книги только навредят вам, потеряете время. Вы могли бы уже давно знать его
> Спасибо, но я скорее приобрету "Руководство умного человека по программированию (на языке
> Си)", т.к. не ожидаю услышать от "полных идиотов" умных мыслей.Приобретайте и читайте. Может, хоть тогда до вас дойдёт, что однобитный float — это бред.
> Приобретайте и читайте. Может, хоть тогда до вас дойдёт, что однобитный float
> — это бред.не дойдёт: для этого недостаточно умной книги, нужен ещё и умный читатель.
> Приобретайте и читайте. Может, хоть тогда до вас дойдёт, что однобитный floatА еще у него там девятибитные структуры. При том он напрочь не понимает как это работает :)
С. Прата. Язык программирования си. Лекции и упражнения. 5-е издание.
+1 за Стивен Прата. Отличная книга.
Учил по этой книге. Правда по оригиналу. Очень подробно все описано.
> С. Прата. Язык программирования си. Лекции и упражнения. 5-е издание.А её где-то достать можно? В интернетах только по С++. В городских магазинах вообще не слышали о таком.
>> С. Прата. Язык программирования си. Лекции и упражнения. 5-е издание.
> А её где-то достать можно? В интернетах только по С++. В городских
> магазинах вообще не слышали о таком.Я покупал месяца 2 назад в читай-городе. Хочу отсканировать и выложить в инет, т.к. сам очень долго искал. Писал им в издательство - их не волнует. Как возьму сканер - займусь.
>Что посоветуете хорошее почитать по СиK&R
Он скорее как справочник и вроде по C89.
> K&RПоддерживаю - читать надо первоисточники.
K&R в переводе Штаркмана (изд. Невский Диалект). Перевод Бродового (изд. Вильямс) не рекомендую - переведено Промтом, причёсано надмозгом, как и большинство книжек этого издательства.
http://c.learncodethehardway.org/book/
Про это кто-нибудь может что сказать?
Читал его книгу, только по питону. Вроде недурно.
книгу не читал, но если человек укушен гвидобейсиком — лучше никаких его книг не читать.
> книгу не читал, но если человек укушен гвидобейсиком — лучше никаких его
> книг не читать.Почему?)
потому что человек укушен гвидобейсиком. этого достаточно, чтобы держаться подальше.
arisu как обычно usira ...
я, видать, спать тебе не даю. всё беспокою. get a life, что ли.
Мне понравилась книжка Подбельского и Фомина "Программирование на языке Си". Все четко изложено, чувствуется математическое образование авторов. Читать ее в 15 лет было сущее удовольствие
кёрниган и ритчи - язык программирования Си, второе издание(в третьем есть проблемы с переводом)
Как-то негусто для 13и лет эволюции...
Это потому что Си идеален. И при этом жив.
Как TeX.
Си не идеален, но он - хороший инструмент для своей области. А в том, что он не повторяет участь монстра С++, не вижу ничего плохого. Для некоторых языков "развитие", по-моему, стало уже самоцелью.
Уж простите, что не напихали 100500 никому особо не нужных, зато новых фич, ломающих всё на свете.
Это стабильный, надёжный, промышленный язык. Ему много изменений и не нужно. Он не идеален, но уже близок к идеалу.
> Как-то негусто для 13и лет эволюции...Как-то с 70-х прошлого века пыжились, пыжились, но так и не родили язык для системного программирования который был бы лучше.
> Как-то с 70-х прошлого века пыжились, пыжились, но так и не родили
> язык для системного программирования который был бы лучше.modula-2, oberon... Сишники от них хватают бугурт, но языки совершеннее.
> modula-2, oberon… Сишники от них хватают бугурт, но языки совершеннее.унылее. потому что ограничений больше.
на всякий случай: я не сказал «хуже».
> унылее. потому что ограничений больше.глядя на количество ошибок в генном коде Си-программистов - строгость языка оправдана.
> на всякий случай: я не сказал «хуже».
Естественно. Хуже - Си.
> Естественно. Хуже — Си.угу. красное хуже зелёного.
так, на всякий случай: я лично очень люблю Component Pascal. думаю, ты знаешь, что это.
> угу. красное хуже зелёного.если надо проезжать мимо светофора - то да.
> так, на всякий случай: я лично очень люблю Component Pascal. думаю, ты
> знаешь, что это.Знаю, но не использовал ни разу. Ты как используешь и где? :)
> Знаю, но не использовал ни разу. Ты как используешь и где? :)к сожалению, никак не использую, потому что BCB под пингвинусы так и не портировали, а у меня лапы не доходят. лет 8 назад использовал для написания всякого внутреннего софта в одной конторе (и громко ругался матом, когда выяснил, как сделан «юникод» в нём; пришлось переписывать всю подсистему работы с базами).
>> Знаю, но не использовал ни разу. Ты как используешь и где? :)
> к сожалению, никак не использую, потому что BCB под пингвинусы так и
> не портировали, а у меня лапы не доходят. лет 8 назад
> использовал для написания всякого внутреннего софта в одной конторе (и громко
> ругался матом, когда выяснил, как сделан «юникод» в нём; пришлось переписывать
> всю подсистему работы с базами).больше 8 лет назад... юникод... ну, ему простительно)
Freepascal хороший инструмент, пытаюсь использовать. И разработчикам gnu-modula-2 не помешала бы помощь, а то в рассылке только один разработчик модулы + один разработчик из корпорации. Ну, и время от времени бегрепортуем то я (раз в полгода) то еще пара человек.
P.S. Пора переходить с Си. Есть языки, кроме строгости - действительно получше. А мы танцуем вокруг него с 70-х, постоянно подкрашивая и латая, чтоб и в этом году он был нормальным. Привычки тяжело менять старым программистам, а молодым - везде дорога быть должна :)
> больше 8 лет назад… юникод… ну, ему простительно)не простительно. поддержка юникода была заявлена изначально, даже в report'е CHAR'ы 16-битные. но! внутри сделана она была круто: брался восьмибитный символ и дополнялся нулевым байтом. соответственно, вместо русского получался latin1. круть. когда открыли исходники, я прибалдел: действительно, именно так строки и преобразовывались, это фича компилятора.
> Freepascal хороший инструмент, пытаюсь использовать.
пытался. но ушёл на C, потому что конкретно надоело хидеры транслировать. особо оно от C ничем не отличается, не вижу смысла ходить по граблям.
> И разработчикам gnu-modula-2 не
> помешала бы помощь, а то в рассылке только один разработчик модулы
> + один разработчик из корпорации.тоже не нужна. oberon2 был бы интересен, или CP — это ещё лучше.
> P.S. Пора переходить с Си.
зачем? просто не надо писать на си большие проекты: он несколько не для этого (фанбои с «а вот ведро пинусов на си написано!» — проходите мимо).
> Есть языки, кроме строгости — действительно получше.
D, например.
> А мы танцуем вокруг него с 70-х, постоянно подкрашивая и латая,
> чтоб и в этом году он был нормальным. Привычки тяжело менять
> старым программистам, а молодым — везде дорога быть должна :)да ладно, C99 вполне неплох — для своих целей. надёжный и удобный макроассемблер, который почти не зависит от архитектуры.
Советую почитать "Аргументы против Си" Питера Мойлана (1993)
Там главный аргумент против Си - плохие программисты на Си. Хотя, кое с чем можно и согласиться.
> Советую почитать "Аргументы против Си" Питера Мойлана (1993)В си можно долго кидаться какашками, но на его замену в системном программировании все-равно ничего лучше нет.
> В си можно долго кидаться какашками, но на его замену в системном
> программировании все-равно ничего лучше нет.это смотря по каким критериям. вообще-то этот уродец рулит по трём основным причинам:
а) за столько лет компиляторы более-менее научились его оптимизировать — относительно неплохо;
б) много, ОЧЕНЬ МНОГО всякого написано на си (и это одна из главных причин);
в) компилятор си — опять же потому, что столько лет уже — есть практически под всё.но это никак не значит, что си — лучший. не самый плохой — это да.
> а) за столько лет компиляторы более-менее научились его оптимизировать — относительно неплохо;
> б) много, ОЧЕНЬ МНОГО всякого написано на си (и это одна из главных причин);Фортран же
> Фортран жеон тоже до сих пор жив примерно по тем же причинам.
> а) за столько лет компиляторы более-менее научились его оптимизировать — относительно неплохо;Компиляторы научились оптимизировать не "его", а промежуточное представление, которое генерится Си франт-эндом. Оптимизатору, как правило, вообще пофигу, на каком языке был написан исходный код. Так что, "относительно неплохо" оптимизируется всё, что может давать выхлоп на вход данного конкретного оптимизатора.
> б) много, ОЧЕНЬ МНОГО всякого написано на си (и это одна из главных причин);
Ну, это вообще не аргумент. ОЧЕНЬ МНОГО всякого написано на Перле, но почему-то это не стало помехой для создания новых скриптовых языков и новых программ на этих языках, которые успешно конкурируют с перловскими, в том числе в тех областях, для которых Перл изначально создавался.
> в) компилятор си — опять же потому, что столько лет уже — есть практически под всё.
Ну, любую систему нужно чем-то собирать, а операционки промышленного уровня на Питоне не пишут :) Так что, получается, если есть операционка, то под неё, скорее всего, уже есть сишный компилятор.
> Компиляторы научились оптимизировать не «его», а промежуточное представление, которое
> генерится Си франт-эндом. Оптимизатору, как правило, вообще пофигу, на каком языке
> был написан исходный код. Так что, «относительно неплохо» оптимизируется всё, что
> может давать выхлоп на вход данного конкретного оптимизатора.никогда не видел, чтобы программы писали на внутреннем коде компилятора. какая разница, как именно написан оптимизатор, может ли фронтэнд понимать другие языки и какого роста марсиане? всё это не имеет отношения к делу.
> Ну, это вообще не аргумент.
обалдеть.
> ОЧЕНЬ МНОГО всякого написано на Перле, но
при чём тут перл?
о. я понял твой способ аргументации, сейчас я его на тебе применю. итак.
у меня есть сосед Василий, он редкостный дурак. а ещё у него две ноги. поскольку с вероятностью, близкой к единице, я уверен, что у тебя тоже две ноги, то ты — дурак.
Аргументы таки, заметь. Для системного программирования применяй немодный язык Модула-2.
http://kronos.ru/about/koltashev
> работы по созданию рабочей станции на базе процессора Кронос с Модула-ориентированной системой командХа! Если процессор специально под Модулу разрабатывался, то неудивительно, что она лучше всего подходила для его программирования! Они, небось, ещё и свой собственный компилятор для этого делали.
Но самое интересное, что когда процессор поменялся и система команд стала другой, то им ничего не оставалось делать, кроме как конвертировать старые Модула-программы в Си!
> Изюминкой этого проекта стало создание кросс-системы, сохранившей все пользовательские интерфейсы первой КСП, в том числе в части системы тестирования и отладки, но получавшей исполнимый код, через конвертацию Модула-программ в Си с последующим получением исполнимого кода с помощью КСП на языке ANSI Cи, поставленной разработчиком БЦВМ.
> В проекте использовалась БЦВМ производства немецкой фирмы Астриум с системой команд MIL-1750A-STD и операционная система разработчика БЦВМ – MOSES-2.Насколько был надёжен такой вот конвертированный из Модулы сишный код - вопрос открытый.
Стринги появились что ли?
Настоящим мужчинам стринги не нужны! ;)
> The new keyword _Generic declares a generic expression that translates into type-dependent "specializations."Блин ну нафига это? Как потом код читать? Видишь cbrt(v), а это на самом деле cbrtf...
А если хочешь потестить код с разными точностями, то так
#define FP float
//#define FP double
//#define FP quad
...
FP calc(FP arg1, FP arg2)делать плохо?
В С++ обощения доведены до ужаса. Но в С, кажись, ещё всё в порядке.
> В С++ обощения доведены до ужаса. Но в С, кажись, ещё всё
> в порядке.за ключевые слова типа "_Abc" надо было расстреливать весь комитет.
да, кстати: не #define FP, а
#ifdef I_HAVE_NO_DIGITS
typedef float MyFloat;
#elsif I_HAVE_A_LITTLE_DIGIT
typedef double MyFloat;
#elsif I_HAVE_ALOT_OF_DIGITS
typedef quad MyFloat;
#else
# error i'm dumb!
#endifMyFloat calc (...)
так страшнее.
> так страшнее.А чего тут страшного? Вроде логичная и прямолинейная конструкция :)
>> так страшнее.
> А чего тут страшного? Вроде логичная и прямолинейная конструкция :)букав больше.
Кто-нибудь пробовал Ceylon? Это близкий к С язык с некоторыми улучшениями, позволяющими избегать большинство ошибок, вроде кривых указателей и переполнений массивов. Есть (отключаемые) рантайм-проверки
Java Virtual Machine? Не нужно. Нет, кому-то, может, и нужно, но как замена C совершенно непригодно.
Виноват, я имел в виду Cyclone :( . На вики есть статья про него, интересная штука. Имхо, обсуждение истории развития С без знакомства с Cyclone будет неполным
я немножко о нём читал. прикола не понял. си — это такой навороченый макроассемблер. если надо писать что-то, где подобный макроассемблер неудобен — есть другие языки. на крайний случай можно написать на си VM и остальное — на ней. к библиотекам это тоже относится, от них не требуется быть написаными на си, достаточно интерфейсов для си.
> си — это такой навороченый макроассемблер. если надо писать что-то, где подобный макроассемблер неудобен — есть другие языкиВы еще попробуйте объяснить это другим. Они все равно будут писать на Си, а раз так, то пусть пишут хотя бы на безопасном диалекте. А некоторые штуки, вроде ядра, сложно писать на чем-то другом - вот тут бы Cyclone подошел, думаю
> от них не требуется быть написаными на си, достаточно интерфейсов для си.Только вот если они не написаны на си - работа с ними превращается в порно. Из-за нестыковок типов данных там и тут и прочая. Да и на чем еще писать всякие полезные и быстрые алгоритмы?
> Только вот если они не написаны на си — работа с ними
> превращается в порно. Из-за нестыковок типов данных там и тут и
> прочая.мнэ… зачем ты пропустил слово «интерфейсы»? одна из задач грамотного интерфейса — заниматься рутиной типа конвертирования типов и ты пы.
> Да и на чем еще писать всякие полезные и быстрые алгоритмы?
на чём угодно.
Си - это высокоуровневый ассемблер, кому он интересен в мэйнстриме?
Пора бы уже D изучать и применять, а они всё труп тыкают...
> Си - это высокоуровневый ассемблер, кому он интересен в мэйнстриме?Тем, кому нужен именно высокоуровневый ассемблер. Машинный код как таковой некросплатформеннен, языки же более высокого уровня, чем Си, гораздо хуже приспособлены для системного программирования.
> Пора бы уже D изучать и применять, а они всё труп тыкают...Разработчики операционных систем уже спешат выбрасывать гигабайты готового кода на Си и переписывать всё на D.
Ну да, D всем очень интересен "в мэйнстриме" :)
Ждём от тебя ядра, переписанного на D. К сентябрю осилишь?
изучай. применяй. тебе кто-то запрещает?
Вы про Ди Женьцзе? Или про принцессу Ди?
> Си - это высокоуровневый ассемблер, кому он интересен в мэйнстриме?Правильно - сотри свою операционку. Мы как раз отдохнем от одного быдлокодирра. А вот как перепишете на D, так и приходите.