02.02.2023

Ричарда Столлман опубликовал книгу по языку Си и расширениям GNU

  • 1.4, Аноним (4), 10:18, 07/09/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Я вот лично не понимаю, какой толк сегодня писать на Си. Когда то Си был компромиссом между ЯВУ и асмом. Когда пишешь на асме код конечно получается более компактным, но при этом надо делать много лишней работы. Например думать о распределении регистров. А тут вроде как и на ЯВУ пишешь и код компактный и быстрый получается. Но о быстроте в наше время говорить уже нет смысла, т.к. любой компилятор умеет оптимизировать гораздо лучше, чем человек. Остается только компактность. Насколько я понимаю, в Си нет райнтайма как такового, из за чего код до сих пор может влазить в килобайты/мегабайты памяти. Но это же очень узкий круг девайсов. Это только для прошивок каких-то и микроконтроллеров.
     
     
     
  • 3.11, Аноним (4), 10:27, 07/09/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Я писал на ассемблере очень много. Это сейчас в 64х битных процах дофига регистров. А раньше их было только 7. И естественно, что регистры — это самая быстрая память в компе. Так что желательно хранить как можно больше информации именно в них. Но постоянно думать о том, что же оставить в регистрах, а что выкинуть в память — это тот еще геммор. И в какой-то момент я просто осознал, что думаю об этой проблеме больше, чем собственно об алгоритме работы моей программы. Это неправильно.
     
     
  • 4.15, Аноним (15), 10:33, 07/09/2022 [^] [^^] [^^^] [ответить]  
  • +/
    То ещё CISC был и оптимизации кода были очевидны, поскольку была очевидна работа простых процессоров. Под современные суперскалярные процы, RISC-процессоры, и уж тем более всякие VLIW кодить на асме в принципе невозможно.
     
  • 2.13, Аноним (15), 10:30, 07/09/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Реальность такова, что прогресс электроники заканчивается, а сложность вычислений растёт. Поэтому всю работу по оптимизации в очередной раз скинут на программиста, которому снова придётся выучить низкоуровневые языки и фреймворки. Посмотрите на OpenGL -> Vulkan, типичный пример как за счёт многократного увеличения сложности API удалось увеличить производительность на несколько десятков процентов.
     

     
  • 2.10, Аноним (10), 10:27, 07/09/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Работать с этим языком без них довольно больно. А вот то, что оглавления в пдфке нет, действительно заслуживает всяческого порицания.
     

  • 1.7, Аноним (7), 10:19, 07/09/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > языковых расширениях, разработанных проектом GNU

    Зря. Для лучшей переносимости лучше следовать единому стандарту, а не местечковым расширениям.

     
  • 1.17, sergeyb (ok), 10:37, 07/09/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Открываем раздел «5.8 Recursive Functions», копируем пример, собираем, запускаем.

    »’

    sergeyb@pony:$ cat fac.c
    int

    factorial(int x)

    {

        if (x < 1)

            return 1;

        else

            return (x * factorial (x — 1));

    }

    int

    main() {

        factorial(1000000000);

    }

    sergeyb@pony:$ gcc fac.c
    sergeyb@pony:$ ./a.out
    Segmentation fault (core dumped)

    sergeyb@pony:$

    »’

    Отличный учебник!

     

    Источник.