LINUX.ORG.RU

Человеческая замена C для своих задач

 ,


0

6

Хочется найти простой кроссплатформенный компилируемый язык для программирования всякой мелочи для себя. Отправной точкой можно назвать C, но хочется поменьше рутины, возможностей на ровном месте выстрелить в ногу и наличия удобных базовых структур, вроде строк, динамических массивов и прочих списков. В кандидатурах сейчас пока C++ (не хочется лезть в дебри именно плюсов, с другой стороны писать в духе C с классами кажется как-то не комильфо), Pascal (начинал с Delphi когда-то, но уже почти не помню), Vala (тыкал немного, напрягает, что надо тянуть Glib и с поддержкой + кроссплатформой не очень), Go, D (на первый взгляд тоже ситуация с поддержкой и библиотеками не радует), Rust (какой-то инопланетный, но идея с управлением памятью интересна).


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

Простой - да, но надежностью там и не пахло.

https://clang.llvm.org/docs/AddressSanitizer.html

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

https://clang.llvm.org/docs/AddressSanitizer.html

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

Михаил

anonymous
()
Ответ на: Заплатите. от Moisha_Liberman

На С можно писать в стиле ООП и, для неосиляторов на поиск книг, в стиле ФП. По крайней мере, использовать отдельные идеи.

Ага: например, писать функции. А отдельные нельзя - примерно все те, что грамотные люди называют ФП. Но откуда о них знать человеку, чей моск форматирован примитивнейшим из популярных языков, и который этим офигеть как гордится?

Если непонятно, статьи в /research/ - это не «можно писать». Аргументом был бы реальный пример ФП-кода на си. Но его нет, и ты бы понимал почему, если бы вообще что-то об этом понимал.

Лучше б ты продолжал про регистры, на это тебя хватает.

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

В гцц такое же есть, в чём проблема? Главное что помогает говнокод отладывать и не допускать ошибок.

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

Вы не на плацу, свой солдафонский юмор

Солдаты обычно так не кривляются. Особенно когда посылают. Откуда вообще пошло что он военный? Он сказал? Так он тут вообще много чего говорит.

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

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

Вот это С - https://en.cppreference.com/w/c А это - https://clang.llvm.org/docs/AddressSanitizer.html нестандартный костылик который придумали корпорасты, чтоб такие быдлокодерки не лажали по 3 раза на дню и тежили себе ЧСВ.

То есть, компилятор и сопутствующий инструментарий — это костыль? Фейспалм.mp4. Чего только не услышишь от «небыдлокодерков». Хотелось бы увидеть, как ты будешь писать ни C без использования компилятора.

Михаил

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

Откуда вообще пошло что он военный?

Он тут на пару с каким-то граммарнацци пытался строить предположения о моем прошлом. И проговорился, что бывший военный.

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

в чём проблема

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

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

Но на практике жрать память и случайно падать в си встречается на порядки реже, чем у конкурентов.

Да, вы еще скажите, что heartbleed-ы в подавляющем большинстве в коде на Java обнаруживаются.

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

валенок

Миша, покажи мне адрессанитайзер в стандарте языка программирования С, а потом умничай.

anonymous
()
Ответ на: валенок от anonymous

Миша, покажи мне адрессанитайзер в стандарте языка программирования С, а потом умничай.

От санитайзеров твой код не станет нестандартным, ты просто меняешь флаги компиляции в дебаге, и всё. Сходи всё-таки по той ссылочке, для тебя это всё явно в новинку.

Михаил

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

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

// Или как раз это объясняет страсть к примитивным технологиям...

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

в языке, они нос воротят

и правильно делают: одно дело дебаг билд, и совсем другое релиз билд — отладочным артефактам не место на устройствах (хотя с нынешним развитием технологий эта граница несколько размыта и клиентам отгружают билды с включенной отладкой, а разработка ведётся постоянно)

Геннадий

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

Миш, это не имеет смысла.

Если я действительно буду объяснять эти... «тонкие материи» на более привычном языке, то я начну получать волшебные пендали от модеров. За мат, да.

А это не имеет смысла. Этих оленей уважаемых калек можно уты́кать носом в их несоответствия и звиздёж, но когда ловишь на базаре, то начинаются попытки отвертеться и съехать с базара. Они кажутся себе очень умными, но за те же годы что я лично слышу о RAII в С, я ни разу не увидел успешной попытки его реализовать.

И все эти «апакажисвойкод» это очередная попытка съехать с базара. Если чувак даже не видит того, что данная ссылка относится к главам из книги, которую он не осилил найти в pdf, то это показатель того, что он и не искал. Ну либо да, он слишком туп для того, чтобы писать на С. =)))

Проще вежливо отправить по всем известному адресу и не тратить время своей счастливой жизни на малолетних дол... ну, Вы поняли. =)))

2 all. Всё что я хотел сказать, я сказал. Всем чмоги в этом чатиге. =))) Бггг... =))) От примеров на D с головной страницы сайта мне было весело. Спасибо, потешили. =)))

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

Жрать память и падать

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

А крестовик будет значительно дольше подобные вещи исправлять!

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

При изменении функции само по себе может измениться поведение вызывающей ее функции, причём непредсказуемо. И чо? Fragile base class - проблема плохих иерархий, а не ООП.

Создали мы родительский класс хэшмэп. Отнаследовались от него, видоизменили хэшмэпу немного и перекрыли метод добавления нового элемента в мапу - add, сделав его под видоизменённого потомка. Всё работает. Спустя годы кто-то добавляет новый метод в родительский класс хэшпэпы для добавления нескольких элементов разом - addAll. Разумеется потомки молча наследуют этот метод, а он ничем не перекрыт. Вот тут образуется дыра с непредсказуемым поведением потомка, если вызвать его унаследованный неперекрытый метод добавления нескольких элементов разом.
На Си при изменении тела вызываемой функции поведение вызывающей функции предсказуемо, потому как входные параметры определены на шаге сборки исходного кода, если не пытаться передавать безтиповый указатель, разумеется.

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

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

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

В общем, С-хейтеры совершенно не могут вменяемо сказать, почему ненавидят его. Видимо, руки из жопы растут — всего-то навсего!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от eao197

А вы сами-то чьих будете? Пишете код на дяду за зарплату или владываете собственные средства в развитие собственного программного продукта?

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

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

Зато быстро.

Эдди, позвольте вам рассказать, что в мире коммерческого программирования (о котором вы, вероятно, мало чего знаете), время деньги. А показатель time to market, в огромном количестве случаев, стократ важнее итоговой производительности выпущенного на рынок и приносящего деньги продукта.

Так что далеко не все участники рынка разработки ПО имеют роскошь делать вот так:

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

На другом конце спектра, кстати, находятся те, кто не спешит и где цена ошибки слишком велика, можно сказать катострофически. И там используют языки вроде Ada. А если и запускают туда C и C++, то кастрированные различными MISRA и пр. отраслевыми стандартами, либо вообще сгенерированные по метаописаниям из гораздо более высокоуровневых языков.

Ну и это:

А крестовик будет значительно дольше подобные вещи исправлять!

вы откуда взяли? По себе судишь всех нехорошо.

В общем, С-хейтеры совершенно не могут вменяемо сказать, почему ненавидят его. Видимо, руки из жопы растут — всего-то навсего!

Да об этом уже было столько раз рассказано, что сколько можно.

Ну вот вам, яркий пример того, что творят трудолюбивые C-шники и как это могло бы быть: https://eao197.blogspot.com/2016/09/progflame.html

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

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

Так на чем базируется этот опыт: на развитии собственного продукта за собственные средства (или даже отдолженные) или же на работе в качестве наемного работника?

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

На самом деле у C есть огромное преимущество перед C++ - меньшее количество случаев с неопределённым поведением.

Если брать «общее» подмножество фич C и C++, то у C больше UB, чем у C++.

Например, переопределение глобальной переменной с другим типом — это компайл-тайм ошибка в C++, но UB в C 🤦

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

Но даже если ограничиться общим подмножеством, всё равно результат не в пользу C++(те же union-ы - очень важный и показательный пример на поле байто*бства)

То, что в C можно делать type-punning с использованием union-ов — распространённый миф. Ключевое слово: миф.

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

в глазки долбишся ?

В общем, С-хейтеры совершенно не могут вменяемо сказать, почему

ссылочку я уже приводил - https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=memory А проблема не в Си. Проблема в том что Линуса на вас, бестолочей, нет. Палками вас пиз-ть за херню клторую вы кодом называете.

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

Так на чем базируется этот опыт: на развитии собственного продукта за собственные средства (или даже отдолженные) или же на работе в качестве наемного работника?

В данное время я пытаюсь совмещать, а насколько успешно покажет время. Сверхпрограммистом я себя не считаю. Более того, по-моему мнению, на продажи качество товара/услуги влияет главным образом лишь в предметах роскоши. Стоит ли так упираться в качество тогда? Тут вопрос уважения к своему потребителю и к самому себе.

anonymous
()
Ответ на: Миш, это не имеет смысла. от Moisha_Liberman

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

Всё правильно, только в твоем случае не «они», а «я». Ах да, в си нет рефлексии, и следовательно нет у тебя.

«апакажисвойкод»

Подошел бы чей угодно код, если ты не понял. Рабочий код.

Если чувак даже не видит того, что данная ссылка относится к главам из книги

Я пробежал пару глав по ссылке, оценил юмор. Так что там с ФП на си? А то же что и всегда: пионеры с «можно сделать» показывают свой уровень. Иногда - 60-летние пионеры.

Ну либо да, он слишком туп для того, чтобы писать на С

Я писал первые несколько лет на си. Рассказы о том, как это сложно и элитно, оставь школьникам.

Всё что я хотел сказать, я сказал

А это наконец-то правда. Тебе нечего было сказать - ты ничего содержательного за весь тред и не сказал.

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

В данное время я пытаюсь совмещать, а насколько успешно покажет время.

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

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

Качество влияет на, как минимум, две вещи: время, которое вам нужно на вывод версии продукта к пользователям (см. выше про время - деньги) и на ваши затраты на саппорт продукта. Соответственно, чем выше качество, тем меньше вы теряете. Если, конечно, качество обходится не слишком дорого.

Так вот в C оно обходится слишком дорого. В C++ несколько дешевле (если, конечно, писать именно на C++). В безопасных языках – еще дешевле.

Поэтому-то С остался там, где он остался. А огромное количество софта за деньги пишется на гораздо более безопасных языках.

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

Затем, что это - самый простой и надежный язык.

К сожалению, большинство людей (включая меня) слишком тупые, чтобы писать на С. А большинство бизнесов слишком бедные, чтобы оплачивать труды тех, кто может это делать.

А за исключением этого незначительного нюанса С — самый лучший на свете язык.

ugoday ★★★★★
()
Ответ на: в глазки долбишся ? от anonymous

Сдуру можно и с крестах утечку памяти неплохую устроить. Так что, не надо о памяти. Это не недостаток языка, а лишь недостаток программиста.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от eao197

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

в мире коммерческого программирования

Да насрать мне на Ынтырпрайз! «Мир коммерческого программирования» — абсолютно то же самое, что и легализованная проституция. Только вместо проституток там — программисты, которые не хозяева сами себе!

Понаеду завтра в Гоморру на пару недель, посмотрю на зажравшиеся морды москалей.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от red75prim

Когда коту скучно, он себе яйца лижет, а когда растопрограммисту скучно, он выискивает UB в стандарте языка C.

Михаил

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

переопределение глобальной переменной с другим типом

Не UB

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

Просто эти «супер-пупер погромисты» на самом деле — школота, возомнившая себя невесть кем. И пока каникулы, отрываются по форумам, мечтая, какими бы крутыми они были «погромистами»...

Что-то никто из местных хаятелей С не привел ссылок на свой гитхаб, где были бы более-менее серьезные вещи на их хипстерских недоЯПах! Видимо, тупо потому, что этот хаятель сам ни строчки кода не написал!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от eao197

Я не про приведения, именно про ошибку в логике

факт наличия здесь UB не страшен

На вкус и цвет, конечно. Но я предпочту неопределённый результат, а не поведение. К тому же, найти и исправить намного легче

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

Спрошу ещё раз: где твоя ОС и 100500 очень нужных библиотек? Браузер на C где?

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

Если руки из жопы растут, то никакой ЯП не поможет. Я и на любом другом ЯП буду такой же быдлокод писать.

Самокритичненько.

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

«Мир коммерческого программирования» — абсолютно то же самое, что и легализованная проституция.

Да уж. У вас не только руки из жопы. Но и в голове какой-то свой мир.

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

Давно уже. Вы, сказочники, не первый год эту мантру повторяете

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

Cveшки ни о чём не говорят на самом деле, что вы тут пытаетесь доказать?

Иннокентий

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

Да ты в натуре в глаза ебёшься бык ты фанерный. Ты хоть сам-то глядел на список?

Прекрасная Сишка (https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=memory) - There are 10817 CVE entries that match your search. Небезопастный раст - (https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=Rust) - There are 8 CVE entries that match your search.

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

вы смогли бы увидеть, что в чистом C нет средств для этого.

Опять голословные заявления. А по-просту: бред!

Eddy_Em ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.