Re[2]: Десктопные на голом C не выглядят монструозными
От: so5team https://stiffstream.com
Дата: 02.02.23 09:51
Оценка: 1 (1) +5 :))
Здравствуйте, mike_rs, Вы писали:

_>Задрачиваться на конкретный язык — признак студента первого курса.


Настоящий программист напишет программу на Фортран на любом языке программирования! (с)
Re[3]: Десктопные на голом C не выглядят монструозными
От: пффф  
Дата: 02.02.23 15:16
Оценка: +3
Здравствуйте, Shmj, Вы писали:

S>Одну маленькую таки пришлось написать, но для ее написания пришлось перелопатить примерно 50 экранов кода.


Примем экран==100 строк. 50 экранов — 5000 строк. Это была студенческая лаба?


S>Думаю что да, кое-какие ритуалы будут раздражать. Однако же скорость написания будет не многим ниже — видимо те самые 20% о которых говорят, которые добавляют удобные инструменты.


У меня сейчас небольшой проект, только начал подбираться к 100KLOC. Пишу месяца три. Стороннего там ничего нет, только своё, на плюсах и его стандартной библиотеке. А, ну ещё там некоторое количество своих библиотек, кочующих из проекта в проект и развивающихся по мере необходимости, которые тоже на плюсах и стандартной библиотеке. Хотя вру — одна стороння либа есть — для разбора JSON. Тоже чисто плюсовая.

Пишу один.

Так вот, на сишечке я бы не стал даже пытаться его сделать — в разумные сроки его просто было бы не сделать. 1) куча бойлерплейта, который не только замедляет написание, но и усложняет восприятие — одно и тоже на плюсах в итоге гораздо быстрее написать рабочее, чем на сишечке; 2) баги, из-за которых либо приложение было бы таким же глючным, как GTKшный софт, либо сроки растянулись бы на годы.

У меня нет никаких голых указателей; я практически не пишу тесты — если что, вылетает исключение, я его ловлю наверху, и смотрю отладчиком, что случилось. Но это довольно редко бывает. Нет указателей — соответственно, нет никаких блуждающих багов, когда что-то куда-то указывает не туда, и там могут лежать как похожие на правду данные, так и левые (которые уже можно было бы заметить) — на сишечке мне пришлось бы написать тестов в несколько раз больше, чем рабочего кода.

Некоторый опыт на сишечке имеется. Я как-то писал на сишечке HTTP-сервер для микроконтроллера, что заняло у меня пару месяцев. Тот проект был очень простым по сравнению с текущим.

Так что ты не думай, гражданин теоретик, а попробуй написать что-то сложнее лабораторки
Re[3]: Десктопные на голом C не выглядят монструозными
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 02.02.23 22:03
Оценка: 1 (1) +1
Здравствуйте, Shmj, Вы писали:

S>Одну маленькую таки пришлось написать, но для ее написания пришлось перелопатить примерно 50 экранов кода.

Ну и как? Взбодрился после такого? Я вот часто работаю с гстример где эта мерзость по легаси причинам и по причинам переносимости существует, и вот каждый раз когда приходится с этим работать мне просто разрывает одно место...
S>Думаю что да, кое-какие ритуалы будут раздражать.
Более чем, ты даже не представляешь как они будут раздражать, но это ты не залезаешь ещё дальше в glib. Весь gobject это тонны болерплейта и только 5-6 строк кода которые тебе нужны.
S>Однако же скорость написания будет не многим ниже — видимо те самые 20% о которых говорят, которые добавляют удобные инструменты.
Я думаю с QT было бы быстрее и вероятнее всего на 40% ниже.
Sic luceat lux!
Re: Десктопные на голом C не выглядят монструозными
От: uncommon Ниоткуда  
Дата: 04.02.23 23:33
Оценка: 2 (1)
Здравствуйте, Shmj, Вы писали:

S>Для примера давайте покритикуем https://gitlab.gnome.org/GNOME/nautilus


https://gitlab.gnome.org/GNOME/nautilus/-/blob/master/src/nautilus-bookmark.c#L82
static void
nautilus_bookmark_set_name_internal (NautilusBookmark *bookmark,
                                     const char       *new_name)
{
    if (g_strcmp0 (bookmark->name, new_name) != 0)
    {
        g_free (bookmark->name);
        bookmark->name = g_strdup (new_name);

        g_object_notify_by_pspec (G_OBJECT (bookmark), properties[PROP_NAME]);
    }
}


`bookmark->name` сначала удаляется, а потом копируется новый, но что если `g_strdup (new_name)` не сможет выделить память? `bookmark->name` будет присвоено NULL, и потом при обращении к нему программа упадёт. Мало того, что обработки ошибок никакой нет, эта операция в таком виде принципиально небезопасна. Сначала надо выделять новый ресурс, а потом уже при успешном выделении освобождать старый. В C++ это хорошо известно из-за исключений, и называется strong exception safety guarantee.

Этот пример я нашел навскидку. Думаю там весь код написан в таком стиле.
Re: Десктопные на голом C не выглядят монструозными
От: CreatorCray  
Дата: 02.02.23 09:19
Оценка: +1
Здравствуйте, Shmj, Вы писали:

S>По идее высокоуровневые приложения на голом С должны быть ад и армагедон.

Они и есть ад и армагеддон.

S> Но нет — они не выглядят так уж слишком страшными, примерно как на Python — без особой разницы.

S>Вот тут много: https://gitlab.gnome.org/GNOME — в ООП-стиле на голом Си.
Это совсем не голый С.
У них активно используется аналог деструкторов через GCC extension: https://blogs.gnome.org/desrt/2015/01/30/g_autoptr/
Что уже крайне сильно меняет расклад.
Вообще в последнее время С потиху превращается в ранний С++.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[2]: Десктопные на голом C не выглядят монструозными
От: Shmj Ниоткуда  
Дата: 02.02.23 09:37
Оценка: :)
Здравствуйте, CreatorCray, Вы писали:

S>> Но нет — они не выглядят так уж слишком страшными, примерно как на Python — без особой разницы.

S>>Вот тут много: https://gitlab.gnome.org/GNOME — в ООП-стиле на голом Си.
CC>Это совсем не голый С.
CC>У них активно используется аналог деструкторов через GCC extension: https://blogs.gnome.org/desrt/2015/01/30/g_autoptr/
CC>Что уже крайне сильно меняет расклад.
CC>Вообще в последнее время С потиху превращается в ранний С++.

Так и что, разве это требует изменения самого языка или компилятора? Использование доп. библиотек с нужным функционалом — никто не запрещает.
Re: Десктопные на голом C не выглядят монструозными
От: mike_rs Россия  
Дата: 02.02.23 09:42
Оценка: +1
Здравствуйте, Shmj, Вы писали:

S>По идее высокоуровневые приложения на голом С должны быть ад и армагедон.


Задрачиваться на конкретный язык — признак студента первого курса. Язык нужно выбирать тот, который позволяет оптимально (!!!) решить конкретную задачу. Оптимально — как с точки зрения самой задачи так и с со стороны квалификации исполнителя. Все крики что делфи/с/яваскрип/питон/и т.п — говно, а нужно использовать только ххх, как самый кошерный — это маркер профнепригодности.
Re[5]: Десктопные на голом C не выглядят монструозными
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 02.02.23 22:06
Оценка: +1
Здравствуйте, Философ, Вы писали:

Ф>Как тебе это удалось?

Смарт поинтеры, контейнеры, array вместо chat*, ну ты понял. Чтобы использовать голые указатели в С++ надо серьёзно обосновать свой выбор.
Sic luceat lux!
Re[6]: Десктопные на голом C не выглядят монструозными
От: reversecode google
Дата: 03.02.23 01:28
Оценка: :)
tokei-i686-pc-windows-msvc.exe my_small_project
===============================================================================
 Language            Files        Lines         Code     Comments       Blanks
===============================================================================
 C Header              489        31351        26965          439         3947
 C++                   351       141269       132324         1501         7444
===============================================================================
 Total                 840       172620       159289         1940        11391
===============================================================================
Re[3]: Десктопные на голом C не выглядят монструозными
От: пффф  
Дата: 03.02.23 11:36
Оценка: +1
Здравствуйте, Pzz, Вы писали:

CC>>У них активно используется аналог деструкторов через GCC extension: https://blogs.gnome.org/desrt/2015/01/30/g_autoptr/


Pzz>Местами может и используется, но совсем не "активно".


Немного произвольно потыкал — везде g_autoptr. Ну, если это "не активно"...
Re: Десктопные на голом C не выглядят монструозными
От: Pzz Россия https://github.com/alexpevzner
Дата: 03.02.23 11:38
Оценка: -1
Здравствуйте, Shmj, Вы писали:

S>По идее высокоуровневые приложения на голом С должны быть ад и армагедон. Но нет — они не выглядят так уж слишком страшными, примерно как на Python — без особой разницы.


А на чем они не ад и армагедон? Существующие тулкиты, все двое, Qt и GTK, подразумевают ад и армагедон, к какому языку их не приладь.
Re[5]: Десктопные на голом C не выглядят монструозными
От: пффф  
Дата: 03.02.23 12:10
Оценка: +1
Здравствуйте, Pzz, Вы писали:

Pzz>Ну в общем и целом, во всех моих крупных сишных проектах сначала закладывается инфраструктура, которая упрощает общие вещи —


логи — много где — не нужны. Вот сейчас — мне не нужны
автоматизация управления памятью — в C++ — искаропки
строки/вектора — в C++ — искаропки
дофига всего остального, что используется, например, у меня в текущем проекте — set/map/unordered_*, всякие алгоритмы — в C++ — искаропки


Pzz>а потом становится все равно, на чем писать, и код пишется по сути решаемой проблемы, а не для борьбы с языком.


Да вот нифига, на сишечке всё равно приходится бороться с ней


П>>Некоторый опыт на сишечке имеется. Я как-то писал на сишечке HTTP-сервер для микроконтроллера, что заняло у меня пару месяцев. Тот проект был очень простым по сравнению с текущим.


Pzz>Странно как-то. 100 тысяч строк ты пишешь за 3 месяца, а я за полтора года. Но при этом HTTP-сервер ты пишешь за два месяца, а я за неделю напишу (если на Си).


Ничего странного. Написал строки, затем текстовые макроподстановки, потом сам сервер. Потом — сайт на сишечке. Шаблоны страниц — в виде текста с макросами (иначе не влезало и/или было слишком геморно). Дизайн — тоже сам. Иконки кое-какие нарисовал. Проверил всё под хром/ие/файрфокс, поправил, что где не работало. Потом сдал всё это заказчику и получил бабос. Всё — за два месяца. При том, что это был Turbo C, а целевая платформа — 186ой с каким-то мизером памяти, как оперативки, так и ПЗУ. Ты ещё помнишь, что такое near/far указатели?

Ну и про 100KLOC я конечно подзагнул немного
Re[8]: Десктопные на голом C не выглядят монструозными
От: Pzz Россия https://github.com/alexpevzner
Дата: 03.02.23 17:29
Оценка: +1
Здравствуйте, Nuzhny, Вы писали:

Pzz>>Ну да. В C++ все абсолютно то же самое.


N>stl же! Моя базовая библиотека OpenCV была переписана с С на С++, у неё были строки свои, умные указатели свои и т.д. Теперь это std::string, std::shared_ptr, std::vector. Мой клиентский код отчасти поэтому стал компактней. По факту же, он стал во много-много раз компактнее и понятней за счёт переписывания базовых классов матриц/векторов/точек/прямоугольников/etc на плюсы. Код перестал быть приседаниями с памятью, а стал отражать предметную область. И при этом он стал даже быстрее работать! Даже этот же код, переписанный на Питон выглядит хуже.


Угу. Иди попробуй скрестить строки STL со строками какого-нибудь условного Qt или какого-нибудь другого аналогичного тулкита.
Re[3]: Десктопные на голом C не выглядят монструозными
От: Pzz Россия https://github.com/alexpevzner
Дата: 05.02.23 12:11
Оценка: :)
Здравствуйте, Shmj, Вы писали:

S>QT то чем не угодил?


Тем, что он — унылое монстрообразное дерьмо.

S>Поставлю вопрос по другому — что вы видели намного лучше?


Ничего не видел, в том и беда.
Re[2]: Десктопные на голом C не выглядят монструозными
От: se_sss  
Дата: 09.02.23 10:20
Оценка: -1
Здравствуйте, uncommon, Вы писали:
> Сначала надо выделять новый ресурс, а потом уже при успешном выделении освобождать старый.

Вообще так себе идея.
Если старый ресурс не удалить, то новый может и не загрузиться, так как памяти не хватит.
И что тогда толку с гарантий, если приложение не работает.
Лично сталкивался c такой ситуацией.
Десктопные на голом C не выглядят монструозными
От: Shmj Ниоткуда  
Дата: 02.02.23 08:25
Оценка:
Вот вы писали, что сахар крайне важен
Автор: Shmj
Дата: 31.01.23
.

По идее высокоуровневые приложения на голом С должны быть ад и армагедон. Но нет — они не выглядят так уж слишком страшными, примерно как на Python — без особой разницы.

Вот тут много: https://gitlab.gnome.org/GNOME — в ООП-стиле на голом Си.

Для примера давайте покритикуем https://gitlab.gnome.org/GNOME/nautilus

Думаете на высокоуровневом — это же будет намного меньше по объему кода а код будет яснее?
Re[3]: Десктопные на голом C не выглядят монструозными
От: пффф  
Дата: 02.02.23 09:43
Оценка:
Здравствуйте, Shmj, Вы писали:

CC>>У них активно используется аналог деструкторов через GCC extension: https://blogs.gnome.org/desrt/2015/01/30/g_autoptr/

CC>>Что уже крайне сильно меняет расклад.
CC>>Вообще в последнее время С потиху превращается в ранний С++.

S>Так и что, разве это требует изменения самого языка или компилятора? Использование доп. библиотек с нужным функционалом — никто не запрещает.


Я для тебя выделил
Re[3]: Десктопные на голом C не выглядят монструозными
От: mike_rs Россия  
Дата: 02.02.23 11:55
Оценка:
Здравствуйте, so5team, Вы писали:

S>Настоящий программист напишет программу на Фортран на любом языке программирования!


исправил
Re[4]: Десктопные на голом C не выглядят монструозными
От: so5team https://stiffstream.com
Дата: 02.02.23 11:57
Оценка:
Здравствуйте, mike_rs, Вы писали:

S>>Настоящий программист напишет программу на Фортран на любом языке программирования!


_>исправил


Да вы, батенька, настоящий программист и есть. Про таковых, собственно, и была оригинальная цитата.
Re: Десктопные на голом C не выглядят монструозными
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 02.02.23 13:35
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Думаете на высокоуровневом — это же будет намного меньше по объему кода а код будет яснее?

Давай начнём обсуждение с того, сколько ты написал программ с помощью gobject? Вот когда напишешь хоть что-то, тогда поговорим.
Sic luceat lux!
Re[2]: Десктопные на голом C не выглядят монструозными
От: Shmj Ниоткуда  
Дата: 02.02.23 14:47
Оценка:
Здравствуйте, Kernan, Вы писали:

S>>Думаете на высокоуровневом — это же будет намного меньше по объему кода а код будет яснее?

K>Давай начнём обсуждение с того, сколько ты написал программ с помощью gobject? Вот когда напишешь хоть что-то, тогда поговорим.

Одну маленькую таки пришлось написать, но для ее написания пришлось перелопатить примерно 50 экранов кода.

Думаю что да, кое-какие ритуалы будут раздражать. Однако же скорость написания будет не многим ниже — видимо те самые 20% о которых говорят, которые добавляют удобные инструменты.
Re[4]: Десктопные на голом C не выглядят монструозными
От: Shmj Ниоткуда  
Дата: 02.02.23 15:26
Оценка:
Здравствуйте, пффф, Вы писали:

S>>Одну маленькую таки пришлось написать, но для ее написания пришлось перелопатить примерно 50 экранов кода.

П>Примем экран==100 строк. 50 экранов — 5000 строк. Это была студенческая лаба?

Мне нужна была только часть функционала. В оригинальном проекте строк около 15 тыс — все изучать не нужно было. Да, небольшой.

П>Некоторый опыт на сишечке имеется. Я как-то писал на сишечке HTTP-сервер для микроконтроллера, что заняло у меня пару месяцев. Тот проект был очень простым по сравнению с текущим.


П>Так что ты не думай, гражданин теоретик, а попробуй написать что-то сложнее лабораторки


Была такая мысль. Пришел сюда чтобы меня отговорили.
Re[4]: Десктопные на голом C не выглядят монструозными
От: Философ Ад http://vk.com/id10256428
Дата: 02.02.23 16:26
Оценка:
Здравствуйте, пффф, Вы писали:

П>...100KLOC..., только своё, на плюсах и его стандартной библиотеке....У меня нет никаких голых указателей;


Как тебе это удалось?
Всё сказанное выше — личное мнение, если не указано обратное.
Re[4]: Десктопные на голом C не выглядят монструозными
От: so5team https://stiffstream.com
Дата: 02.02.23 16:41
Оценка:
Здравствуйте, пффф, Вы писали:

П>У меня сейчас небольшой проект, только начал подбираться к 100KLOC. Пишу месяца три.


Это 100KLOC самого проекта или же суммарно с вашими готовыми либами и сторонней JSON-библиотекой?
Re[4]: Десктопные на голом C не выглядят монструозными
От: reversecode google
Дата: 02.02.23 16:50
Оценка:
П>У меня сейчас небольшой проект, только начал подбираться к 100KLOC. Пишу месяца три. Стороннего там ничего нет, только своё, на плюсах и его стандартной библиотеке. А, ну ещё там некоторое количество своих библиотек, кочующих из проекта в проект и развивающихся по мере необходимости, которые тоже на плюсах и стандартной библиотеке. Хотя вру — одна стороння либа есть — для разбора JSON. Тоже чисто плюсовая.

П>Пишу один.


100к ?
малАватА будет
cd my_small_project
"C:\Program Files\Git\usr\bin\find.exe" . -type f -name \*.* | "C:\Program Files\Git\usr\bin\xargs.exe" "C:\Program Files\Git\usr\bin\wc.exe" -l
172379 total
только .cpp и .h
Re[5]: Десктопные на голом C не выглядят монструозными
От: пффф  
Дата: 02.02.23 16:55
Оценка:
Здравствуйте, Философ, Вы писали:

П>>...100KLOC..., только своё, на плюсах и его стандартной библиотеке....У меня нет никаких голых указателей;


Ф>Как тебе это удалось?


Стандартная библиотека? Не, не слышал.

Хотя, конечно, указатели немножко есть. Иногда что-то опциональное в/из функций передаётся. И то, потому что я ленивый и плохо знаю новые библиотеки языка и с optional лень заморачиваться
Re[5]: Десктопные на голом C не выглядят монструозными
От: пффф  
Дата: 02.02.23 16:59
Оценка:
Здравствуйте, so5team, Вы писали:

П>>У меня сейчас небольшой проект, только начал подбираться к 100KLOC. Пишу месяца три.


S>Это 100KLOC самого проекта или же суммарно с вашими готовыми либами и сторонней JSON-библиотекой?


Без.

Для статы использую github.com/AlDanial/cloc, у ней есть опции что эксклюдить из подсчета
Re[6]: Десктопные на голом C не выглядят монструозными
От: so5team https://stiffstream.com
Дата: 02.02.23 17:02
Оценка:
Здравствуйте, пффф, Вы писали:

П>>>У меня сейчас небольшой проект, только начал подбираться к 100KLOC. Пишу месяца три.


S>>Это 100KLOC самого проекта или же суммарно с вашими готовыми либами и сторонней JSON-библиотекой?


П>Без.


Ну ахринеть!

У меня хорошо, если 3KLOC в месяц выходит (не считая тестов).
Re[7]: Десктопные на голом C не выглядят монструозными
От: пффф  
Дата: 02.02.23 17:08
Оценка:
Здравствуйте, so5team, Вы писали:

S>>>Это 100KLOC самого проекта или же суммарно с вашими готовыми либами и сторонней JSON-библиотекой?


П>>Без.


S>Ну ахринеть!


S>У меня хорошо, если 3KLOC в месяц выходит (не считая тестов).


Ну, я урезал осетра

Повнимательнее глянул — одна либа таки пробралась, и в стате там обо всех файлах, не только плюсовых. Чисто плюсового около 45KLOC.

Ну, и я люблю писать воздушно — 30% blank Итого чисто кода получается 30KLOC.
Re[3]: Десктопные на голом C не выглядят монструозными
От: CreatorCray  
Дата: 02.02.23 21:31
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Так и что, разве это требует изменения самого языка или компилятора?

Конечно!

S> Использование доп. библиотек с нужным функционалом — никто не запрещает.

Это нельзя сделать библиотечно.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[5]: Десктопные на голом C не выглядят монструозными
От: CreatorCray  
Дата: 02.02.23 21:31
Оценка:
Здравствуйте, Философ, Вы писали:

П>>У меня нет никаких голых указателей;

Ф>Как тебе это удалось?
С++ же
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[5]: Десктопные на голом C не выглядят монструозными
От: Michael7 Россия  
Дата: 02.02.23 23:45
Оценка:
Здравствуйте, reversecode, Вы писали:

R>cd my_small_project

R>"C:\Program Files\Git\usr\bin\find.exe" . -type f -name \*.* | "C:\Program Files\Git\usr\bin\xargs.exe" "C:\Program Files\Git\usr\bin\wc.exe" -l
R>172379 total
R>только .cpp и .h

Позанудствую

-type f -name \*.* намекает, что вообще все файлы. Может конечно у тебя там ничего другого, кроме cpp и .h и нет, но это тоже надо суметь.
Re[2]: Десктопные на голом C не выглядят монструозными
От: vaa  
Дата: 03.02.23 02:34
Оценка:
Здравствуйте, mike_rs, Вы писали:

_>Здравствуйте, Shmj, Вы писали:


S>>По идее высокоуровневые приложения на голом С должны быть ад и армагедон.


_>Задрачиваться на конкретный язык — признак студента первого курса. Язык нужно выбирать тот, который позволяет оптимально (!!!) решить конкретную задачу. Оптимально — как с точки зрения самой задачи так и с со стороны квалификации исполнителя. Все крики что делфи/с/яваскрип/питон/и т.п — говно, а нужно использовать только ххх, как самый кошерный — это маркер профнепригодности.


А как же general purpose(оно же универсальные ЯП)? ХабраБлогеры C к универсальным относят.

PS повторюсь. лучший не тот который лучше к задаче, т.к. это инструмент, и если я не умею им пользоваться,
то лучше я сделаю как умею(Парадокс Блаба)
конечно приятно владеть лучшим из инструментов, но на это нужно время и должны быть перспективы применения. путь одиночек.
тот же C# вполне себе середина, пусть и не золотая. можно и шашкой помахать и на еду заработать. последнее время появляется много готовых компонентов, фрэймворков и технологий очень неплохого качества.
как пример https://devblogs.microsoft.com/dotnet/announcing-the-dotnet-community-toolkit-810/
модель до появления фрэймворка могла весить за 100LOC. теперь это 10LOC. Конечно до clojure далеко(рекордсмены по краткости).
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[5]: Десктопные на голом C не выглядят монструозными
От: CreatorCray  
Дата: 03.02.23 04:14
Оценка:
Здравствуйте, reversecode, Вы писали:

R>"C:\Program Files\Git\usr\bin\find.exe" . -type f -name \*.* | "C:\Program Files\Git\usr\bin\xargs.exe" "C:\Program Files\Git\usr\bin\wc.exe" -l

R>172379 total

Так оно посчитает и пустые строки и комменты и строки на которых есть просто тупо скобка.
Скачай тот же SourceMonitor — он куда честнее это всё покажет.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[2]: Десктопные на голом C не выглядят монструозными
От: Pzz Россия https://github.com/alexpevzner
Дата: 03.02.23 11:35
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>У них активно используется аналог деструкторов через GCC extension: https://blogs.gnome.org/desrt/2015/01/30/g_autoptr/


Местами может и используется, но совсем не "активно".
Re[2]: Десктопные на голом C не выглядят монструозными
От: Pzz Россия https://github.com/alexpevzner
Дата: 03.02.23 11:42
Оценка:
Здравствуйте, mike_rs, Вы писали:

_>Задрачиваться на конкретный язык — признак студента первого курса. Язык нужно выбирать тот, который позволяет оптимально (!!!) решить конкретную задачу. Оптимально — как с точки зрения самой задачи так и с со стороны квалификации исполнителя. Все крики что делфи/с/яваскрип/питон/и т.п — говно, а нужно использовать только ххх, как самый кошерный — это маркер профнепригодности.


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

В результате, когда надо внести какое-то изменение, приходится искать человека в группе, у которого соответствующий компонент мало того, что входит в тематику этого человека, так еще и написан на понятном ему языке. Что не способствует, конечно, эффективности решения насущных вопросов.
Re[4]: Десктопные на голом C не выглядят монструозными
От: Pzz Россия https://github.com/alexpevzner
Дата: 03.02.23 11:47
Оценка:
Здравствуйте, пффф, Вы писали:

П>Так вот, на сишечке я бы не стал даже пытаться его сделать — в разумные сроки его просто было бы не сделать. 1) куча бойлерплейта, который не только замедляет написание, но и усложняет восприятие — одно и тоже на плюсах в итоге гораздо быстрее написать рабочее, чем на сишечке; 2) баги, из-за которых либо приложение было бы таким же глючным, как GTKшный софт, либо сроки растянулись бы на годы.


Ну в общем и целом, во всех моих крупных сишных проектах сначала закладывается инфраструктура, которая упрощает общие вещи — логи, автоматизация управления памятью, строки/вектора, а потом становится все равно, на чем писать, и код пишется по сути решаемой проблемы, а не для борьбы с языком.

П>Некоторый опыт на сишечке имеется. Я как-то писал на сишечке HTTP-сервер для микроконтроллера, что заняло у меня пару месяцев. Тот проект был очень простым по сравнению с текущим.


Странно как-то. 100 тысяч строк ты пишешь за 3 месяца, а я за полтора года. Но при этом HTTP-сервер ты пишешь за два месяца, а я за неделю напишу (если на Си).
Re[6]: Десктопные на голом C не выглядят монструозными
От: Pzz Россия https://github.com/alexpevzner
Дата: 03.02.23 11:48
Оценка:
Здравствуйте, Kernan, Вы писали:

K>Смарт поинтеры, контейнеры, array вместо chat*, ну ты понял. Чтобы использовать голые указатели в С++ надо серьёзно обосновать свой выбор.


chat* — это указатель на чатики?
Re[6]: Десктопные на голом C не выглядят монструозными
От: Pzz Россия https://github.com/alexpevzner
Дата: 03.02.23 11:51
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Так оно посчитает и пустые строки и комменты и строки на которых есть просто тупо скобка.

CC>Скачай тот же SourceMonitor — он куда честнее это всё покажет.

А зачем? Они ж линейно связаны. Коэффициент зависит от стиля. Можно просто экспериментально выяснить свой коэффициент, а дальше ограничиваться wc
Re[6]: Десктопные на голом C не выглядят монструозными
От: Pzz Россия https://github.com/alexpevzner
Дата: 03.02.23 13:05
Оценка:
Здравствуйте, пффф, Вы писали:

Pzz>>Странно как-то. 100 тысяч строк ты пишешь за 3 месяца, а я за полтора года. Но при этом HTTP-сервер ты пишешь за два месяца, а я за неделю напишу (если на Си).


П>Ничего странного. Написал строки, затем текстовые макроподстановки, потом сам сервер. Потом — сайт на сишечке. Шаблоны страниц — в виде текста с макросами (иначе не влезало и/или было слишком геморно). Дизайн — тоже сам. Иконки кое-какие нарисовал. Проверил всё под хром/ие/файрфокс, поправил, что где не работало. Потом сдал всё это заказчику и получил бабос. Всё — за два месяца. При том, что это был Turbo C, а целевая платформа — 186ой с каким-то мизером памяти, как оперативки, так и ПЗУ. Ты ещё помнишь, что такое near/far указатели?


Я для такого написал полноценный TCP/IP стек. Но вот именно HTTP-сервера у меня не было. HTTP в те времена еще не был изобретен.
Re[7]: Десктопные на голом C не выглядят монструозными
От: пффф  
Дата: 03.02.23 13:11
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Я для такого написал полноценный TCP/IP стек. Но вот именно HTTP-сервера у меня не было. HTTP в те времена еще не был изобретен.


TCP/IP был в SDK контроллера, под Turbo C, потому на сишечке и пришлось писать. Не помню почему, но TC++/BC++ не заводилось с SDK, или ещё какие-то проблемы были, уже запамятовал. А, да, я ещё тогда мучал сорцы cfront'а неделю, хотелось на плюсиках, хоть на совсем старых, писать, но не срослось
Re[5]: Десктопные на голом C не выглядят монструозными
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 03.02.23 14:22
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Ну в общем и целом, во всех моих крупных сишных проектах сначала закладывается инфраструктура, которая упрощает общие вещи — логи, автоматизация управления памятью, строки/вектора, а потом становится все равно, на чем писать, и код пишется по сути решаемой проблемы, а не для борьбы с языком.


А потом приходишь на другой проект — там своя другая инфраструктура, свои строки, вектора. А потом на другой — и там всё свой. И в третьем своё. И в каждом свои особенности и баги.
Re[6]: Десктопные на голом C не выглядят монструозными
От: Pzz Россия https://github.com/alexpevzner
Дата: 03.02.23 14:38
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>А потом приходишь на другой проект — там своя другая инфраструктура, свои строки, вектора. А потом на другой — и там всё свой. И в третьем своё. И в каждом свои особенности и баги.


Ну да. В C++ все абсолютно то же самое.
Re[7]: Десктопные на голом C не выглядят монструозными
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 03.02.23 14:47
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Ну да. В C++ все абсолютно то же самое.


stl же! Моя базовая библиотека OpenCV была переписана с С на С++, у неё были строки свои, умные указатели свои и т.д. Теперь это std::string, std::shared_ptr, std::vector. Мой клиентский код отчасти поэтому стал компактней. По факту же, он стал во много-много раз компактнее и понятней за счёт переписывания базовых классов матриц/векторов/точек/прямоугольников/etc на плюсы. Код перестал быть приседаниями с памятью, а стал отражать предметную область. И при этом он стал даже быстрее работать! Даже этот же код, переписанный на Питон выглядит хуже.
Re[7]: Десктопные на голом C не выглядят монструозными
От: пффф  
Дата: 03.02.23 17:50
Оценка:
Здравствуйте, Pzz, Вы писали:

N>>А потом приходишь на другой проект — там своя другая инфраструктура, свои строки, вектора. А потом на другой — и там всё свой. И в третьем своё. И в каждом свои особенности и баги.


Pzz>Ну да. В C++ все абсолютно то же самое.


Если это не яндекс или что-то подобное, где любят писать свои велосипеды, то нет. Да и то, это во многом из-за того, что многие начинали, когда STL нормально не устоялась. Сейчас — STL/Boost — 90%, + либы из предметной области, + всякие вспомогательные либы. Либы — если не копролит, то они тоже скорее всего на стандартных контейнерах
Re[8]: Десктопные на голом C не выглядят монструозными
От: Pzz Россия https://github.com/alexpevzner
Дата: 03.02.23 18:04
Оценка:
Здравствуйте, пффф, Вы писали:

П>Если это не яндекс или что-то подобное, где любят писать свои велосипеды, то нет. Да и то, это во многом из-за того, что многие начинали, когда STL нормально не устоялась. Сейчас — STL/Boost — 90%, + либы из предметной области, + всякие вспомогательные либы. Либы — если не копролит, то они тоже скорее всего на стандартных контейнерах


Qt же.
Re[9]: Десктопные на голом C не выглядят монструозными
От: пффф  
Дата: 03.02.23 18:05
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Qt же.


Что Qt?
Re[10]: Десктопные на голом C не выглядят монструозными
От: Pzz Россия https://github.com/alexpevzner
Дата: 03.02.23 18:43
Оценка:
Здравствуйте, пффф, Вы писали:

Pzz>>Qt же.


П>Что Qt?


У Qt все свое. Строки, вектора...

Если гуёвая часть программы написана на Qt, а не-гуёвая на STL, замучаешься состыковывать...
Re[9]: Десктопные на голом C не выглядят монструозными
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 03.02.23 19:05
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Угу. Иди попробуй скрестить строки STL со строками какого-нибудь условного Qt или какого-нибудь другого аналогичного тулкита.


Там уже давно есть норм интероп, проблем нет — проверено. Но и этот твой пример является подтверждением правила, что в древних фреймворках такое ещё было, а сейчас прошло. С C++11 строки стали намного быстрее, всякие emplace методы классные. Уже 12 лет как исчезла точно необходимость самому всё реализовывать. Даже и раньше отчасти.
Re[11]: Десктопные на голом C не выглядят монструозными
От: пффф  
Дата: 03.02.23 19:46
Оценка:
Здравствуйте, Pzz, Вы писали:

П>>Что Qt?


Pzz>У Qt все свое. Строки, вектора...


Да. Если гуй на Qt пишешь, можно кутишные типы использовать. Всё равно это не свои велосипеды, а де факто стандарт для гуёвых приложений


Pzz>Если гуёвая часть программы написана на Qt, а не-гуёвая на STL, замучаешься состыковывать...


Я так делал много раз, никаких проблем.
Re[2]: Десктопные на голом C не выглядят монструозными
От: Shmj Ниоткуда  
Дата: 03.02.23 20:28
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>А на чем они не ад и армагедон? Существующие тулкиты, все двое, Qt и GTK, подразумевают ад и армагедон, к какому языку их не приладь.


QT то чем не угодил?

Поставлю вопрос по другому — что вы видели намного лучше?
Re[8]: Десктопные на голом C не выглядят монструозными
От: Patalog Россия  
Дата: 05.02.23 06:58
Оценка:
Здравствуйте, Nuzhny, Вы писали:

[]

N>Моя базовая библиотека OpenCV

N>Даже этот же код, переписанный на Питон выглядит хуже.

Там одна путаница row-column vs. column-row чего стоит. Запихнули бы это давно када-нибудь на уровень биндингов и ручку для настройки поведения, для обратной совместимости.
Почетный кавалер ордена Совка.
Re[9]: Десктопные на голом C не выглядят монструозными
От: пффф  
Дата: 05.02.23 07:10
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Угу. Иди попробуй скрестить строки STL со строками какого-нибудь условного Qt или какого-нибудь другого аналогичного тулкита.


А в чем проблема? Ну, будет на границах переконвертация в/из, и что?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.