The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"GitHub опубликовал статистику за 2020 год"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Присылайте удачные настройки в раздел примеров файлов конфигурации на WIKI.opennet.ru.
. "GitHub опубликовал статистику за 2020 год" +2 +/
Сообщение от Ordu (ok), 03-Дек-20, 05:26 
> Для оптимизации нужно изучать алгоритмы, а это не столько к плюсам относится, сколько к математике.

Не совсем. Алгоритмы алгоритмами, но программирование -- это не только умение выбрать/составить алгоритм, это ещё и умение этот алгоритм изложить так, чтобы с минимумом абстракций, максимально понятно для читателя, чтобы было возможно вносить изменения, чтобы эти изменения в виде патчей не меняли бы больше строк, чем нужно, чтобы документируемо, чтобы тестами можно было покрыть, чтобы баги можно было искать, причём желательно чтобы большинство багов было бы сделано невозможным, потому что структура кода и/или используемые типы не позволяют...

И когда мы берём всё это вместе и объединяем с языком типа C++, то это всё -- отдельное умение, на самом деле это и есть уровень квалификации в языке программировании. О таких вещах неплохо было бы и в отношении куда более простого C рассказывать -- типа как можно креативно использовать макросы, чтобы делать вещи, в которых без макросов утонешь в boilerplate, и поэтому если без макросов, то лучше везде вместо типизированных указателей использовать void* и хрен с ним с типизацией. В смысле ошибок будет меньше, несмотря на нетипизированные указатели, просто потому что меньше кода руками набирать придётся, и меньше тупых ошибок будет совершено. Или может стоит в каких-то случаях объявить функцию как static inline, передавать туда и возвращать оттуда килобайтовую структуру по значению? Или не стоит так делать, потому что тупой препод в ВУЗе за такое на пересдачу отправлял?

В языках типа C и C++ довольно много таких нюансов, которые хрен где прочитаешь. Только через опыт изучения чужого кода и разглядывание дизассемблерных дампов можно въехать. И в C++ такого больше, потому что там больше возможностей. Я лет двадцать назад, когда выкинул венду и влез в linux, быренько добрался до сорцов ядра, и шаблоны у меня тогда трещали по всем швам. Хрен с ним с goto, который considered harmful -- я привык к jmp в асме, и на goto смотрел без испуга. Но, как щаз помню, list.h мне просто вынес мозг. Я целый день разглядывал его, примеры его использования, разбираясь в том, как это работает. Хотя, казалось бы, чего там: циклический список с принудительной связью и заголовком. Но как завёрнуто -- я не думал, что на C можно писать так.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
GitHub опубликовал статистику за 2020 год, opennews, 02-Дек-20, 23:58  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру