Anatoly Vorobey (avva) wrote,
Anatoly Vorobey
avva

Category:

C

Why C Is Not My Favourite Programming Language — статья в Kuro5hin с длинной дискуссией в комментариях.

Статья довольно глупая, откровенная провокация на флейм. Тем не менее, в ней есть немало любопытных trivia, а в дискуссии встречаются, в стоге бреда, несколько интересных иголок.

Я не знал, кстати, что "you musn't cast the return value of malloc()". Это, конечно, тоже неправда, но проверка показала, что, действительно, завсегдатаи comp.lang.c советуют этого не делать. Вот здесь, например, подробно объясняется, почему: потому-что, во-первых, при правильном использовании malloc() это совершенно ничего не даёт (возвращаемый malloc() результат типа void* и так будет правильно приведён к нужному типу), а во-вторых, в случае, если вы забыли включить stdlib.h, то компилятор будет считать malloc() функцией, возвращающей int, но из-за эксплицитного приведения не выдаст ошибки и (на некоторых архитектурах) сгенерирует неправильный код.

Вряд ли я, впрочем, последую этому совету: привык приводить результат malloc(), а проверка того, что не забыл #include <stdlib.h>, у меня и так намертво в голове зашита.


Что же касается переносимости (так Лингво предлагает переводить portability) кода на C, то как раз позавчера произошло порадовавшее меня событие: Брэд взял написанный мной сервер memcached, и попробовал скомпилировать и запустить его на 64-битной машине (до сих пор никто этого не пробовал, включая меня). Заработало без всяких проблем с первого раза. Если учесть, что memcached только и делает, что очень интенсивно работает с памятью и сложными структурами кэширования информации, очень неплохой результат, по-моему.
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 19 comments