Здравствуйте, Shmj, Вы писали:
S>Одну маленькую таки пришлось написать, но для ее написания пришлось перелопатить примерно 50 экранов кода.
Ну и как? Взбодрился после такого? Я вот часто работаю с гстример где эта мерзость по легаси причинам и по причинам переносимости существует, и вот каждый раз когда приходится с этим работать мне просто разрывает одно место... S>Думаю что да, кое-какие ритуалы будут раздражать.
Более чем, ты даже не представляешь как они будут раздражать, но это ты не залезаешь ещё дальше в glib. Весь gobject это тонны болерплейта и только 5-6 строк кода которые тебе нужны. S>Однако же скорость написания будет не многим ниже — видимо те самые 20% о которых говорят, которые добавляют удобные инструменты.
Я думаю с QT было бы быстрее и вероятнее всего на 40% ниже.
Sic luceat lux!
Re[5]: Десктопные на голом C не выглядят монструозными
Здравствуйте, Философ, Вы писали:
Ф>Как тебе это удалось?
Смарт поинтеры, контейнеры, array вместо chat*, ну ты понял. Чтобы использовать голые указатели в С++ надо серьёзно обосновать свой выбор.
Sic luceat lux!
Re[5]: Десктопные на голом C не выглядят монструозными
Здравствуйте, 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 не выглядят монструозными
Здравствуйте, 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, Вы писали:
CC>>У них активно используется аналог деструкторов через GCC extension: https://blogs.gnome.org/desrt/2015/01/30/g_autoptr/
Pzz>Местами может и используется, но совсем не "активно".
Немного произвольно потыкал — везде g_autoptr. Ну, если это "не активно"...
Re: Десктопные на голом C не выглядят монструозными
Здравствуйте, Shmj, Вы писали:
S>По идее высокоуровневые приложения на голом С должны быть ад и армагедон. Но нет — они не выглядят так уж слишком страшными, примерно как на Python — без особой разницы.
А на чем они не ад и армагедон? Существующие тулкиты, все двое, Qt и GTK, подразумевают ад и армагедон, к какому языку их не приладь.
Re[2]: Десктопные на голом C не выглядят монструозными
Здравствуйте, mike_rs, Вы писали:
_>Задрачиваться на конкретный язык — признак студента первого курса. Язык нужно выбирать тот, который позволяет оптимально (!!!) решить конкретную задачу. Оптимально — как с точки зрения самой задачи так и с со стороны квалификации исполнителя. Все крики что делфи/с/яваскрип/питон/и т.п — говно, а нужно использовать только ххх, как самый кошерный — это маркер профнепригодности.
Ну в целом, тенденция нонешнего времени заключается в том, что в больших проектах понамешано разных языков, в диапазоне от Си до Хаскеля, вот именно с такой мотивацией.
В результате, когда надо внести какое-то изменение, приходится искать человека в группе, у которого соответствующий компонент мало того, что входит в тематику этого человека, так еще и написан на понятном ему языке. Что не способствует, конечно, эффективности решения насущных вопросов.
Re[4]: Десктопные на голом C не выглядят монструозными
Здравствуйте, пффф, Вы писали:
П>Так вот, на сишечке я бы не стал даже пытаться его сделать — в разумные сроки его просто было бы не сделать. 1) куча бойлерплейта, который не только замедляет написание, но и усложняет восприятие — одно и тоже на плюсах в итоге гораздо быстрее написать рабочее, чем на сишечке; 2) баги, из-за которых либо приложение было бы таким же глючным, как GTKшный софт, либо сроки растянулись бы на годы.
Ну в общем и целом, во всех моих крупных сишных проектах сначала закладывается инфраструктура, которая упрощает общие вещи — логи, автоматизация управления памятью, строки/вектора, а потом становится все равно, на чем писать, и код пишется по сути решаемой проблемы, а не для борьбы с языком.
П>Некоторый опыт на сишечке имеется. Я как-то писал на сишечке HTTP-сервер для микроконтроллера, что заняло у меня пару месяцев. Тот проект был очень простым по сравнению с текущим.
Странно как-то. 100 тысяч строк ты пишешь за 3 месяца, а я за полтора года. Но при этом HTTP-сервер ты пишешь за два месяца, а я за неделю напишу (если на Си).
Re[6]: Десктопные на голом C не выглядят монструозными
Здравствуйте, Kernan, Вы писали:
K>Смарт поинтеры, контейнеры, array вместо chat*, ну ты понял. Чтобы использовать голые указатели в С++ надо серьёзно обосновать свой выбор.
chat* — это указатель на чатики?
Re[6]: Десктопные на голом C не выглядят монструозными
Здравствуйте, CreatorCray, Вы писали:
CC>Так оно посчитает и пустые строки и комменты и строки на которых есть просто тупо скобка. CC>Скачай тот же SourceMonitor — он куда честнее это всё покажет.
А зачем? Они ж линейно связаны. Коэффициент зависит от стиля. Можно просто экспериментально выяснить свой коэффициент, а дальше ограничиваться wc
Re[5]: Десктопные на голом C не выглядят монструозными
Здравствуйте, Pzz, Вы писали:
Pzz>Ну в общем и целом, во всех моих крупных сишных проектах сначала закладывается инфраструктура, которая упрощает общие вещи —
логи — много где — не нужны. Вот сейчас — мне не нужны
автоматизация управления памятью — в C++ — искаропки
строки/вектора — в C++ — искаропки
дофига всего остального, что используется, например, у меня в текущем проекте — set/map/unordered_*, всякие алгоритмы — в C++ — искаропки
Pzz>а потом становится все равно, на чем писать, и код пишется по сути решаемой проблемы, а не для борьбы с языком.
Да вот нифига, на сишечке всё равно приходится бороться с ней
П>>Некоторый опыт на сишечке имеется. Я как-то писал на сишечке HTTP-сервер для микроконтроллера, что заняло у меня пару месяцев. Тот проект был очень простым по сравнению с текущим.
Pzz>Странно как-то. 100 тысяч строк ты пишешь за 3 месяца, а я за полтора года. Но при этом HTTP-сервер ты пишешь за два месяца, а я за неделю напишу (если на Си).
Ничего странного. Написал строки, затем текстовые макроподстановки, потом сам сервер. Потом — сайт на сишечке. Шаблоны страниц — в виде текста с макросами (иначе не влезало и/или было слишком геморно). Дизайн — тоже сам. Иконки кое-какие нарисовал. Проверил всё под хром/ие/файрфокс, поправил, что где не работало. Потом сдал всё это заказчику и получил бабос. Всё — за два месяца. При том, что это был Turbo C, а целевая платформа — 186ой с каким-то мизером памяти, как оперативки, так и ПЗУ. Ты ещё помнишь, что такое near/far указатели?
Ну и про 100KLOC я конечно подзагнул немного
Re[6]: Десктопные на голом C не выглядят монструозными
Здравствуйте, пффф, Вы писали:
Pzz>>Странно как-то. 100 тысяч строк ты пишешь за 3 месяца, а я за полтора года. Но при этом HTTP-сервер ты пишешь за два месяца, а я за неделю напишу (если на Си).
П>Ничего странного. Написал строки, затем текстовые макроподстановки, потом сам сервер. Потом — сайт на сишечке. Шаблоны страниц — в виде текста с макросами (иначе не влезало и/или было слишком геморно). Дизайн — тоже сам. Иконки кое-какие нарисовал. Проверил всё под хром/ие/файрфокс, поправил, что где не работало. Потом сдал всё это заказчику и получил бабос. Всё — за два месяца. При том, что это был Turbo C, а целевая платформа — 186ой с каким-то мизером памяти, как оперативки, так и ПЗУ. Ты ещё помнишь, что такое near/far указатели?
Я для такого написал полноценный TCP/IP стек. Но вот именно HTTP-сервера у меня не было. HTTP в те времена еще не был изобретен.
Re[7]: Десктопные на голом C не выглядят монструозными
Здравствуйте, Pzz, Вы писали:
Pzz>Я для такого написал полноценный TCP/IP стек. Но вот именно HTTP-сервера у меня не было. HTTP в те времена еще не был изобретен.
TCP/IP был в SDK контроллера, под Turbo C, потому на сишечке и пришлось писать. Не помню почему, но TC++/BC++ не заводилось с SDK, или ещё какие-то проблемы были, уже запамятовал. А, да, я ещё тогда мучал сорцы cfront'а неделю, хотелось на плюсиках, хоть на совсем старых, писать, но не срослось
Re[5]: Десктопные на голом C не выглядят монструозными
Здравствуйте, Pzz, Вы писали:
Pzz>Ну в общем и целом, во всех моих крупных сишных проектах сначала закладывается инфраструктура, которая упрощает общие вещи — логи, автоматизация управления памятью, строки/вектора, а потом становится все равно, на чем писать, и код пишется по сути решаемой проблемы, а не для борьбы с языком.
А потом приходишь на другой проект — там своя другая инфраструктура, свои строки, вектора. А потом на другой — и там всё свой. И в третьем своё. И в каждом свои особенности и баги.
Re[6]: Десктопные на голом C не выглядят монструозными
Здравствуйте, Nuzhny, Вы писали:
N>А потом приходишь на другой проект — там своя другая инфраструктура, свои строки, вектора. А потом на другой — и там всё свой. И в третьем своё. И в каждом свои особенности и баги.
Ну да. В C++ все абсолютно то же самое.
Re[7]: Десктопные на голом C не выглядят монструозными
Здравствуйте, Pzz, Вы писали:
Pzz>Ну да. В C++ все абсолютно то же самое.
stl же! Моя базовая библиотека OpenCV была переписана с С на С++, у неё были строки свои, умные указатели свои и т.д. Теперь это std::string, std::shared_ptr, std::vector. Мой клиентский код отчасти поэтому стал компактней. По факту же, он стал во много-много раз компактнее и понятней за счёт переписывания базовых классов матриц/векторов/точек/прямоугольников/etc на плюсы. Код перестал быть приседаниями с памятью, а стал отражать предметную область. И при этом он стал даже быстрее работать! Даже этот же код, переписанный на Питон выглядит хуже.