LINUX.ORG.RU

Оценки хелловорлда тред

 , , ,


2

3

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

★★★★
Ответ на: комментарий от yoghurt

Тестами покрыл уже?

Нет, не очень понимаю, что там тестировать. Всё требует рантайма в виде какого-то состояния pulseaudio и dbus.

f1u77y ★★★★
() автор топика
Ответ на: комментарий от f1u77y

Я использую CMake, например, потому что он является файлом проекта для некоторых популярных IDE и текстовых редакторов. Автодополнение из коробки (особенно при использовании glib) — хороший аргумент, я щитаю.

Поделись используемым набором инструментов.

EXL ★★★★★
()
Ответ на: комментарий от EXL

Emacs (cmake-ide + rtags) или Qt Creator по настроению

f1u77y ★★★★
() автор топика
Ответ на: комментарий от f1u77y

Всё требует рантайма в виде какого-то состояния pulseaudio и dbus.

Заводишь, значит, виртуалку, в неё деплоишься, в ней моделируешь, профит!

Если на каком-то из шагов в предыдущем предложении выходит облом, шлёшь патчи соответствующему проекту (докеру там, кему, пульсе, дбусу). Двойной профит!

yoghurt ★★★★★
()
Ответ на: комментарий от yoghurt

И да, нужно бы ещё CI поднять с целой матрицей дистрибутивов, можно в нескольких версиях. Вот тогда будет зачтено

yoghurt ★★★★★
()
Ответ на: комментарий от f1u77y

Как раз хотел написать, что он и в C есть (только в виде расширений GCC/Clang, правда).

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

тоже есть

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

anonymous
()
Ответ на: комментарий от f1u77y

Абсурд абсурдом, то для того же тревиса хотя бы регулярную сборку прикрутить было полезно.

yoghurt ★★★★★
()
Ответ на: комментарий от andreyu

О, вроде хорошая штука.

Она умеет генерировать «проекты» для какого-нибудь плагина к текстовому редактору и/или IDE? Первая страница поиска не выдавала ничего полезного.

f1u77y ★★★★
() автор топика
Ответ на: комментарий от slovazap

Cmake использует make не по назначению + вот параллельность и страдает.

mittorn ★★★★★
()
Ответ на: комментарий от f1u77y

Вам бы всё проектики генерить, да вот то что генерирует cmake - проектом не является. Это прослойка для интеграции cmake в ide, а не проект.

mittorn ★★★★★
()
Ответ на: комментарий от anonymous

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

В glib за меня уже обмазались.

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

В glib есть подсчёт ссылок, так что если прикрутить к этому g_autoptr, то выйдет вполне себе аналог std::shared_ptr.

std::unique_ptr нет из-за отсутствия move-семантики, да.

f1u77y ★★★★
() автор топика
Ответ на: комментарий от mittorn

Окей, неважно как это называть, важно то, насколько оно полезно. А оно полезно, и с make такую штуку сделать не выйдет.

f1u77y ★★★★
() автор топика
Ответ на: комментарий от mittorn

Кроссплатсформенность != кросскомпиляторность. Останемся в рамках gcc.

Нет, не останемся. Это фундаментальное требование к системе сборки, make не удовлетворяет даже ему.

Cmake использует make не по назначению + вот параллельность и страдает.

Да нет, именно что по назначению - он генерирует самый обычный, совместимый и понятный Makefile. Просто Make не умеет в эффективную параллельность сам по себе, почитайте что-нибудь типа http://www.conifersystems.com/whitepapers/gnu-make/

slovazap ★★★★★
()
Ответ на: комментарий от f1u77y

Не спорю, ide не умеют make использовать как проект, make на это просто не расчитан

mittorn ★★★★★
()
Ответ на: комментарий от slovazap

Прочитал. То что синтаксис make уг я и так знаю. И что правильный мейкфайл сложно написать тоже. Но make и не система сборки сам по себе. Это система выполнения правил с зависимостями. Описал корректно все правила и оно будет работать быстро и параллельно.

mittorn ★★★★★
()
Ответ на: комментарий от f1u77y

Как раз хотел написать, что он и в C есть (только в виде расширений GCC/Clang, правда).

умные указатели

тоже есть

ох лол, что люди только не придумают, чтобы не писать на плюсах

UVV ★★★★★
()
Ответ на: комментарий от f1u77y

В glib есть подсчёт ссылок, так что если прикрутить к этому g_autoptr, то выйдет вполне себе аналог std::shared_ptr.

Не выйдет, во-первых g_auto, g_autoptr и т.п. работает только с переменными, указатель, который не будет сохранен в переменную, вызовет утечку памяти. Во-вторых этот атрибут не работает с параметрами функций, что логично. В-третьих - надо реализовать автоматическое копирование (накрутку счетчика) при вызове функций, сохранении или в выражениях, иначе будет сегфолт.

anonymous
()
Ответ на: комментарий от mittorn

Но make и не система сборки

Ну так с этого и надо было начинать. Вернее не начинать вовсе, упоминая make в разговоре о системах сборки.

slovazap ★★★★★
()
Последнее исправление: slovazap (всего исправлений: 1)

правильной дорогой идёте, товаришч! !

главное в любом хелловорде это LICENSE, COPYRIGHT и ещё preamble в каждом файле добавить.

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

Про понабежавших уже сказали, от себя добавлю, что лично знаком с людьми, которые добавляют preamble к каждой посылке на онлайн-соревнованиях по спортивному программированию.

Так что я ещё не пробил дно.

f1u77y ★★★★
() автор топика
Ответ на: комментарий от EXL

набижали офигевшие дети.

там 300 строчек в двух файлах..просто разминка.. а человека с размаху учат плохому

вот кому может быть потребен этот код ? он даже не плох, но максимум кому он нужен - это таким же как автор. А тут фигак, license отдельным файлом, прочитать перед использованием. Да каким-бы он не был.

хотя, вольному воля и сейчас так принято :-)

MKuznetsov ★★★★★
()
Ответ на: комментарий от RazrFalcon

11 коммитов, а уже одна утечка исправлена. Нет чтобы на нормальных языках писать.

На «нормальных языках» реализовать утечки не намного сложнее, от явных ошибок вроде зацикленных Rc или забытого clear, до всяких раздутых кешей и преаллоцированной, но не очищенной памяти, в контейнерах и структурах. И в «нормальных» языках такого рода ошибки допускают даже чаще, т.к. не имеют привычки следить за памятью, а то и не всегда представляют, что реально с ней происходит. Это из моих наблюдений, не претендую на единственно верную точку зрения.

anonymous
()
Ответ на: комментарий от MKuznetsov

и ещё preamble в каждом файле добавить.

Почему не эпилог? Открываешь файл, и у тебя на половину экрана бессмысленный текст, который в работе не нужен. Почему лицензию не пихают в конец файла?

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Молодой человек, это не для вас сделано, девочкам так удобнее лицензионную чистоту проверять.

anonymous
()
Ответ на: комментарий от i-rinat

Открываешь файл, и у тебя на половину экрана бессмысленный текст, который в работе не нужен.

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

anonymous
()
Ответ на: комментарий от UVV

это есть зер гут. я выпиливаю пистон из системы и как раз с этим codegen непонятно было - нужен, не нужен? я его убрала из сборки просто. теперь понятно, что можно смело его фтопку отправлять. а сишные файлы можно и руками написать, если нужно - не проблема.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от i-rinat

щаз же уже вроде можно метки со ссылкой на лицензию пихать. и места не занимает, и однозначно указывает на текст лицензии.

Iron_Bug ★★★★★
()
Ответ на: комментарий от mittorn

по-моему, там если грамотно макросы определить, то привязки к путям не будет. во всяком случае, её можно указывать макросом. но он довольно неудобен, когда библиотеки находятся и не в стандартном системном каталоге, и не в корне проекта, а снаружи.

Iron_Bug ★★★★★
()
Ответ на: комментарий от slovazap

Просто Make не умеет в эффективную параллельность сам по себе

Про существование jobserver'f автор похоже не в курсе. Иксперты такие иксперты

annulen ★★★★★
()
Ответ на: комментарий от slovazap

То-то его везде где можно на ninja заменяют.

Просто у cmake Makefile-генератор вместо нормальных мейкфайлов генерит говно, которое мало того что рекурсивное, так еще и на каждый чих вызывает cmake, парсит всякую лабуду типа link.txt, не использует зависимости из gcc и содержит кучу ненужных в нормальной ситуации целей. В генераторе для ninja косяки убрали, все равно конечно угребище получается по сравнению с норальным build.ninja, так как втыкаются лишние зависимости в каждую цель во имя своместимости с поведением других генераторов, но по крайней мере терпимо

annulen ★★★★★
()
Ответ на: комментарий от f1u77y

Костыль костылём, а всякие плюшки вроде автокомплита с ним работают, потому что экспортируются команды сборки. А с Make никакого автокомплита в сложных проектах. Ну или руками отдельно писать эти всякие .ycm_extra_conf.py

Есть bear, который позволяет получить compile_commands.json для чего угодно

annulen ★★★★★
()
Ответ на: комментарий от UVV

вполне правильный. на С можно вручную написать, для плюсов он не нужен. в конце концов, на С можно написать часть на плюсах, если лень писать вручную. стало быть - можно смело выпиливать.

Iron_Bug ★★★★★
()
Ответ на: комментарий от f1u77y

А в чем проблема, если geany это делает легким нажатием кнопки мыши? Можно даже на клавосочетание или дополнение преамбулу повесить.

Я считаю это правильным — указывать в преамбуле текст лицензии, чтобы не было проблем, когда выложат текст под закрытой лицензией, а ты его будешь пытаться в свой GPL-код воткнуть. Ну и все равно без преамбулы не обойтись, т.к. как ты еще кодировку текста явно укажешь, чтобы Geany не думал, что ты в хрюникоде каком-то перевод для gettext'а пишешь!

anonymous
()
Ответ на: комментарий от f1u77y

Не надо глиб использовать, это ж дрянь редкостная!

Если так не хватает ООПщины, переходи на кресты, но зачем сишечку родную превращать у угребище?

anonymous
()
Ответ на: комментарий от EXL

Задумка интересная, только надо было автору на alsa делать, т.к. пульса — дерьмище, которым только извращенцы чертовы пользуются!

anonymous
()
Ответ на: комментарий от annulen

О, не знал об этой штуке, спасибо!

ловит exec

Вот это костыль. Хотя, насколько я понимаю, лучше ещё не придумали.

f1u77y ★★★★
() автор топика
Ответ на: комментарий от anonymous

дрянь редкостная

Почему? Делает жизнь немного проще, а сильных недостатков я пока не обнаружил. Или там есть какие-то подводные?

не хватает ООПщины

К этому я нейтрален, больше хотелось либу для работы с DBus, которая с первого взгляда нормально смотрится.

f1u77y ★★★★
() автор топика
Ответ на: комментарий от anonymous

Пульсой пользуются в том числе те, кто не понимает, что происходит, потому что она всё же во многих дистрах по дефолту. Я как раз принадлежу к этой категории. Можешь объяснить (хоть даже ссылками и/или ключевыми словами для гуглежа), чем одно на сегодняшний день хуже другого?

f1u77y ★★★★
() автор топика
Ответ на: комментарий от f1u77y

Почему?

Жирное и тормознутое.

К этому я нейтрален

Если ООПщина не нужна, тогда вообще не понимаю смысла glib тянуть!

DBus

А этот шлак зачем?

anonymous
()
Ответ на: комментарий от f1u77y

Ты хотя бы по ЛОРу посмотри, сколько проблем у пользующихся пульсой вылезает! Начиная от MIDI-синтеза и заканчивая элементарными глюками, рассинхроном и т.п.

Какой смысл вообще плодить сущности без надобности? Оккама на этих поцтерингов не хватает! Есть alsa, есть альтернатива — oss. Они прекрасно справляются с задачами, на них возложенными, и обеспечивают нормальную работу со звуком. На кой хер поверх них городить какой-то костыль?

anonymous
()
Ответ на: комментарий от anonymous

Может и так, но (пока ещё?) мне кажется, что знает он как минимум больше меня. Так что будет неплохо, если он действительно назовёт какие-то подводные, с которыми я не сталкивался.

f1u77y ★★★★
() автор топика
Ответ на: комментарий от anonymous

А этот шлак зачем?

Для основной задачи хелловорлда — контролировать плееры. Более или хотя бы настолько же универсального пути делать это я не знаю.

тогда вообще не понимаю смысла glib тянуть!

Ради dbus и некоторого упрощения жизни в других аспектах.

Жирное и тормознутое.

Не замечал торознутости, нудаладно.

f1u77y ★★★★
() автор топика
Ответ на: комментарий от anonymous

Ты хотя бы по ЛОРу посмотри, сколько проблем у пользующихся пульсой вылезает! Начиная от MIDI-синтеза и заканчивая элементарными глюками, рассинхроном и т.п.

Как раз я уже давно не видел тем про пульсу. А у меня, как у неофита (с 14 года), вообще с пульсой не было проблем. С другой стороны, мне от неё не было ничего нужно кроме регулировки громкости звука в двух каналах.

На кой хер поверх них городить какой-то костыль?

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

f1u77y ★★★★
() автор топика
Последнее исправление: f1u77y (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.