Ответы пользователя по тегу C
  • Хайп вокруг ЯП Rust и C?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    не являются ли ошибки с памятью ошибками программиста, а не компилятора и языка программирования

    Вы попробуйте на Rust что нибудь написать. Там не то что ошибочный, там безошибочный код непросто скомпилировать))
    Ответ написан
    Комментировать
  • Возможно ли в процедурном программирование, имитировать ООП?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    До C++ в чистом С классы реализовывали структурами. Методы имитировались включением указателя на функцию в поле структуры, а наследование включением указателя на наследуемую структуру.
    Ответ написан
    Комментировать
  • Какой смысл несет слово "имитация" в словосочетании "имитация передачи аргументов по ссылке"?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    C всегда передает аргументы по значению. Для имитации передачи по ссылке передается значение указателя. Всегда по ссылке передают аргументы Fortran и Perl. В C++ можно передавать и по ссылке и по значению.
    Ссылка - это псевдоним, второе имя переменной.
    Указатель - это адрес в памяти где хранится значение.
    Ссылка - абстракция выше чем указатель на память. Ссылка не знает об организации памяти - это просто псевдоним. Указатель - только один из способов реализации ссылки.
    При передаче по значению делается копия переменной (в C для имитации call-by-reference копируется указатель).
    При передаче по ссылке - передается псевдоним переменной.
    Ответ написан
    Комментировать
  • Каким образом стать гуру в Си?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    Си не только для железа, а ещё для системных вызовов.
    Главные умения - ручное управление памятью и работа над ошибками.
    Знать - libc и заголовочные файлы своей системы.
    Нужно освоить сборку - обязательно make(синтаксис Makefile). Есть ещё сборщики - cmake, gmake и новых напридумывали вроде Ninja. Ну и конечно флаги компилятора и линкера.
    Из литературы - *nix ситемы оснащены командой man - предоставляющей очень годную документацию(в интернетах есть web-копии).
    В освоении лучших практик очень помогает чтение доброкачественного кода, например открыты исходники Plan 9.
    Ответ написан
    Комментировать
  • Какой язык программирования выбрать для данной цели?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    Отрисовывать наверное в браузере, если вы не собираетесь готовое кино по http пересылать. Для такого есть например threejs.org, рендерит в webgl если браузер поддерживает или скатывается на canvas. А вот симуляция небесной механики кеплера обычно делается интегрированием верле и является чрезвычайно тяжелой вычислительной задачей для хотя бы 4-5 тел. Такое можно закодить в JS, но браузер греться будет. Наверное разумней просчитывать симуляцию на сервере один раз для всех клиентов на чем нибудь низкоуровневом(хоть C) и отдавать браузеру пересчитанные координаты тел. Это если вас интересует именно симуляция и адекватная а не игрушечная.
    Ответ написан
    Комментировать
  • Какова архитектура крупных приложений на низкоуровневых языках?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    Почитайте заголовочные .h файлы хорошо структурированных opensource проектов. Я на Plan9 учусь.
    Ответ написан
    Комментировать
  • Какая IDE для обычной C?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    На меня Understand от https://scitools.com произвела глубочайшее впечатление, особенно при работе с масштабной code-base.
    Ответ написан
  • Как получать информацию от демона на Си?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    Ну если не в socket и не в файл(что вобщем одно и то же), то остается просто печать в stderrr, stdout(которые в принципе то же файлы)
    Ответ написан
  • Как реализовать peer-to-peer технологию?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    Самый тупой вариант: пиры регистрируются на сервисе, который служит исключительно для service discovery.
    Ответ написан
  • Bison - как реализовать ООП?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    В первых инкарнациях С++ объект хранился в struct структуре, наследование ссылкой на структуру шаблона, а методы ссылками на функции в полях структуры. Позже появились виртуальные таблицы позволяющие сложные манипуляции как на этапе компиляции так и времени исполнения.
    Ответ написан
    Комментировать