LINUX.ORG.RU

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

 ,


0

6

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


Ответ на: Да проще же всё! от Moisha_Liberman

Зачем язык-то усложнять, не понимаю?

В чем усложнение? Тем более, что gcc это уже умеет почти(cleanup атрибут у переменной).

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

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

Какие возможности Си дает по сравнению с крестами?

Воображать из себя программиста.

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

Точно. Это мой основной язык. А насчёт «зачем?» - хочется так. Объективных критериев здесь нет

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

А насчёт «зачем?» - хочется так. Объективных критериев здесь нет

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

Полностью объективно действительно не получится, но все же при выборе языка есть чем руководствоваться. У Си, как у языка, нет ни одного преимущества перед крестами.

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

Я в курсе. Это я не к тому, что на крестах что-то решается менее удобно, просто для разнообразия

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

У Си, как у языка, нет ни одного преимущества перед крестами.

Есть, С менее ограничен, более предсказуем.

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

Можно.

cleanup атрибут у переменной

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

и код был чище и возиться со всем этим не надо

Код и так чистится при сохранении исходника (возни в принципе нет). splint это всё таки, secure progrsmming lint. И проверка на косяки с памятью это одна из его функций.

Рекомендую. ;)

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

Полностью объективно действительно не получится, но все же при выборе языка есть чем руководствоваться. У Си, как у языка, нет ни одного преимущества перед крестами

Так я с этим не спорю. Это был ответ на «знающий кресты к си не притронется». Не всё в жизни подчиняется логике

anonymous
()
Ответ на: В С меньше... от Moisha_Liberman

Рычажков и кнопочек, за которые так любят дёргать code monkeys дёргать, не понимая что они делают и зачем

В крестах особо не подергаешь без понимания.

На С просто пишешь как надо, без изъ... без «изысков» короче.

На плюсах никто не мешает делать так же. Там где надо.

Тот же механизм templates может немало горя принести при его безголовом с точки зрения архитектуры применении.

Хорошо. Давайте подробнее.

Вместо шаблонов у вас может быть: копипаста, макросы, кодогенерация или динамика с void* и кастами.

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

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

Если долго, долго терпеть, а потом сходить посрать — то получится программа на Си. Но какой бы большой не оказалась куча, она будет 8 битной. Даже кукурузина будет 8 бит.

Этот способ программирования называется malloc/free и остался последним распространённым в мире.

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

Да, конечно...

В крестах особо не подергаешь без понимания.

Теперь понять бы откуда столько говнокода на крестах...

Вместо шаблонов у вас может быть: копипаста, макросы, кодогенерация или динамика с void* и кастами.

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

Только С из-за его большей предсказуемости всё таки меньше к этому располагает.

Moisha_Liberman ★★
()
Последнее исправление: Moisha_Liberman (всего исправлений: 1)
Ответ на: Да, конечно... от Moisha_Liberman

Говнокода на C++ много, потому что у народа утвердилось мнение, что C++ это такая бысрая java, и чем дальше, тем больше это мнение укрепляется.

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

Дайте угадаю?

Не больше, чем на сях

Ввиду меньшей распространённости чем С? Да, наверное. В отдельные классы задач С++ даже не заносят. На С мне такие классы задач неведомы.

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

Сочувствую

Особенно интересно мнение лоровских аналитиков, экспертов в С, и в том сколько бит на самом деле каждому надо, не читавших K&R.

anonymous
()
Ответ на: Да, конечно... от Moisha_Liberman

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

Предлагаемые на Си альтернативы(копипаста, макросы, кодогенерация, void*), во-первых, доступны в крестах, а во-вторых, еще хуже шаблонов во всех смыслах.

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

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

Для плюсовых шаблонов есть способы борьбы.

Типа ты можешь движением флага компилятора превратить разворот шаблона на 100 типов во что-то другое?

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

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

Eddy_Em ☆☆☆☆☆
()
Ответ на: Дайте угадаю? от Moisha_Liberman

Ввиду меньшей распространённости чем С?

Я тебя умоляю. Меньшая распространенность только в opensource и embedded. Проприетарного кода на крестах поболее будет

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

О, такой запредельной тупости я еще не встречал...

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

Если опустить стремящийся к нулю остаток, то 100% нужного и полезного софта написано либо на С, либо на С++. На остальном пишут либо говно, никому не нужное, либо всякий legacy на фортране.

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

А мне нет %) Ты ведь ничего не читал, судя по тому что пишешь.

Судя по всему, это сообщение о недопустимой сложности комменария для программтста Си.

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

Да. Соглашусь.

Плюс к тому, комитет по стандартизации С++ напалма где-то свистнул и от души так балуется.

Стандарт прёт как на дрожжах. В последний раз, по-моему, они в стандарт умудрились порядка 2/3 буста запихать. Зачем? Смысл? Цель?

И есть подозрение что они не остановятся. Но да, это не «быстрая java». Здесь, как говорится, одно лишнее движение и вы папа.

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

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

anonymous
()
Ответ на: Да. Соглашусь. от Moisha_Liberman

они в стандарт умудрились порядка 2/3 буста запихать

У меня коллега на крестах пишет, рассказывал, какой классный стал С++17, и что теперь можно выкинуть буст и чуть ли не libasio...

Мне страшно становится, во что кресты превращаются. Благо, С не уничтожают такими же темпами, и на нем можно хорошо и уверенно писать все, что душе угодно.

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

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

Eddy_Em ☆☆☆☆☆
()
Ответ на: Да, конечно... от Moisha_Liberman

А так-то сговнокодить можно на чём угодно ... Только С из-за его большей предсказуемости всё таки меньше к этому располагает.

Необоснованное утверждение. Скорее наоборот, возможности крестов помогают избежать говнокода. Не всем правда =)

RAII избавляет от мусорного кода, копипасты, случайных ошибок, goto в конец функции и пр.

Шаблоны от копипасты или запутанного кода на void*.

И т.д. и т.п.

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

Java/C# - тоже много(еще не известно, на чем больше). Хотя вот этим двум я тоже не симпатизирую

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

Благо, С не уничтожают такими же темпами

Там просто нечего уничтожать. И никто всё равно это не реализует. Не удивлюсь, если треды всё ещё только в мюслях. Заскорузлость уровня Си и его недалёких поклонников.

anonymous
()
Ответ на: Да. Соглашусь. от Moisha_Liberman

Ну в последние годы и C компиляторы свои приоритеты развернули на 180 градусов и то что было хорошо и правильно резко стало нехорошо и не правильно, а дыры в стандарте используются чтобы была возможность генерить необъяснимую дичь просто потому что вроде как можно и здравый смысл нам тут не указ. То есть дали возможность коммерческим конторам заработать неплохо денег. Возможно как раз это и подкосит сейчас популярность C. Ну или волна спадет и опять все вернется на адекватные рельсы.

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

Не удивлюсь, если треды всё ещё только в мюслях

Хрен там! Завезли в гнутую реализацию недавно!

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

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

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

поясни за 8 бит

для пацанов, ага )

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

Есть проблема.

Предлагаемые на Си альтернативы(копипаста, макросы, кодогенерация, void*), во-первых, доступны в крестах, а во-вторых, еще хуже шаблонов во всех смыслах.

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

Там где является, вы всегда можете взять то, что взяли бы для си.

Я тоже так подумал и просто вернулся на С. =) С++ это только там, где С нет. Ну, например, на Sailfish OS. Со всем остальным С справляется.

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

Типа ты можешь движением флага компилятора превратить разворот шаблона на 100 типов во что-то другое?

Ну я сталкивался с такой проблемой последний раз лет 15 назад. Самый простой пример - вынос основной общей части на void*, с оставлением на шаблоне уже тривиальных однострочных прослоек, которые просто инлайнились и «пропадали». Т.е. код был как на void*, но типобезопасный и без каких-либо кастов на «клиенте».

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

Это типа «для кроссплатформенности». Нафиг - не понимаю. Есть же pthreads.

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

Я не сильно расстроюсь...

Если С будет привлекать меньше неофитов. Пока (пока, я подчеркну это) он довольно прост и логичен. Не раскабанел.

Что будет дальше — поживём-увидим.

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

В любом языке есть...

И спорные конструкции и спорное к ним отношение. Я, например, ничего плохого в том же goto не вижу. Да, по временам это может дать спагетти-код. А по временам это здорово экономит время и усилия и ресурсы. goto cleanup: и всё почистили.

Видел бойцов, которым и setjmp/longjmp не нравились. И чё делать? Не использовать?

Но С всё таки проще и, следовательно, более контролируем чем С++.

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

Ну примерно так, да...

У меня коллега на крестах пишет, рассказывал, какой классный стал С++17, и что теперь можно выкинуть буст и чуть ли не libasio...

Я не считал вот прямо в деталях какой процент там теперь и от чего, но стало весьма очково когда я почитал С++17.

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