LINUX.ORG.RU

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

 ,


0

6

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


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

Именно.

Но я добавлю что упомянутая мною VFS это, вдобавок, механизм ядра. Так что, тут про пространство имён я бы в принципе не думал. Ну или думал бы именно в контексте ядра. А это отдельная песня.

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

Я, собственно, вот о чём.

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

бла бла бла, ну и что что тормозит, зато кроссплатформенно. А что, слабо собирать с более бычтрой либой, с поддержкой AVX, SSE для платформ где это поддерживается? А все почему, потому что закат солнца вручную утомляет.

Слились сишнички в оптимизациях. устали закатывать. только и хватае силенок простыни на лоре пописывать.

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

Пффф...

Свобода означает и ответственность. Или как минимум, обязанности. Я тоже иной раз рекомендую перед программированием вынуть свои /dev/hands из своей же /dev/ass и подать питалово на /dev/brains.

И что?

С другой стороны, больше кода-больше и косяков. Это говорит только о том, что кода много. На rust столько нет. Дальше-то что?

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

Ясно.

По данному комментарию:

тебе надо, ты и переписывай. царь недоделанный.

Могу только сказать что детонацией пукана у оппонента я удовлетворён. =)))

И мне даже не нужно просить реализацию jemalloc на rust. =)))

Moisha_Liberman ★★
()
Ответ на: Пффф... от Moisha_Liberman

очередное блр-бла-бла. а по факту - дыра на дыре от управлятелей ресурсами вручную.

С другой стороны, больше кода-больше и косяков.

Именно, а ты предлагаеш и дальше косячить, ты наверное мазохист.

anonymous
()
Ответ на: Хочу rust grep от Moisha_Liberman

Еще раз, для дурачка мойши - тебе надо, ты и пиши, клоун.

anonymous
()
Ответ на: Ясно. от Moisha_Liberman

сразу как перепишеш вебкит на С, браузерописатель недоделанный.

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

По старой доброй традиции ЛОРа...

сразу как перепишеш вебкит на С, браузерописатель недоделанный.

А пачиму ни на ирланге? То есть, почему не на D? =)))

Rust как-то стал понятен, почему бы теперь не на D?

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

Не всем дано.

Вам точно не дано. Соболезную. Но тут ещё пых есть и 1С. Вы можете найти себя там. Я в Вас верю! =)))

Moisha_Liberman ★★
()
Последнее исправление: Moisha_Liberman (всего исправлений: 1)
Ответ на: комментарий от anonymous

У Вас 4.2.

Просто потому, что мне лень коммитить в https://ru.m.wikipedia.org/wiki/NetSurf

А лень из-за того, что своих задач море.

И да. Забыл.

Именно, а ты предлагаеш и дальше косячить, ты наверное мазохист.

Знаете чем профессиональный программист отличается от прфессиАнального? Первый читает вещи типа Securely Programming in C - SANS Institute и делает выводы из прочтённого, а второй только свой код. И то через раз понимает написанное.

Не хочется косячить? Не косячьте. Я не против. Всё уже давным-давно сказано. Если не доходит, то я не санитар Вам. Точно. =)))

Moisha_Liberman ★★
()
Последнее исправление: Moisha_Liberman (всего исправлений: 1)
Ответ на: комментарий от andalevor

Зависит от определения «типизация». Под некоторые распространенные определения(например у Пирса) попадают только языки со статической типизацией.

anonymous
()
Ответ на: Не понял? от Moisha_Liberman

Это что, шутка? Ну в наши времена уже можно говорить о «программировании на Qt» в противовес «программированию на С++», но...

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

anonymous
()
Ответ на: У Вас 4.2. от Moisha_Liberman

то что ты не санитар, а пациент - это ясно как божий день.

Просто потому, что мне лень коммитить в https://ru.m.wikipedia.org/wiki/NetSurf

Еще один пример когда С-шники устали закатывать вручную.

Знаете чем профессиональный программист отличается от прфессиАнального? Первый читает вещи типа...

Очередное бла-бла-бла. ссылку на список CVE еще раз дать ? Читатель.

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

Можно подумать, что «программирующие на Qt» знают этот Qt целиком. Но ведь Мойшам главное - набросить пожирнее :)

htower_ ★★
()
Ответ на: Для того, чтобы дать ответ... от Moisha_Liberman

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

Это запрос ресурса. В C++ происходит тоже самое. Но ресурс потом еще и вернуть надо.

anonymous
()
Ответ на: Для того, чтобы дать ответ... от Moisha_Liberman

Всё просто и красиво. RAII не нужен.

Вы забыли рассказать, как вы ресурсы освобождаете.

RAII не нужен. В С. В С++ иного выхода нет.

Как это нет? Можно делать так же, как в Си.

RAII и распространён так широко в С++ и, по сути, больше ни где.

В D и Rust есть. В языках со сборкой мусора его просто так не сделать, но там как раз для того же самого есть другие средства: менеджеры контекста в python(with), using в C#, try-with-resources в Java. В go сделали через defer.

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

Коротко.

Можно делать так же, как в Си.

Можно. Но тогда С++ ненужен.

Вы забыли рассказать, как вы ресурсы освобождаете.

Думал это очевидно. Закрываю файл или использую free(). А что, нужно что-то ещё кроме системных функций, использующих системные вызовы?

В языках со сборкой мусора его просто так не сделать,

Отлично. Зачем эти индейские (чуть не написал «индусские») проблемы шерифу?

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

Вы серьёзно?

Вам про то, что от добавления чего-то в стандартную библиотеку вы никак не страдаете.

Вас точно ни чего не смущает в слове «стандартная»?

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

Хорошо.

Можно подумать, что «программирующие на Qt» знают этот Qt целиком.

Вы хотя бы не говорите что «программирование на Qt» это тоже самое что и «программирование на С++». В общем и целом.

Хоть в чём-то я с Вами согласен. =)

Moisha_Liberman ★★
()
Ответ на: Енот от anonymous

Какая отличная шутка!

про оптимистичное выделение еноты не слышали. И про системные вызовы для выделение памяти, то что это основа слоупочности, тоже.

Именно из-за того, что функции типа malloc()/calloc()/realloc() просто излучают оптимизм и из-за того, что внезапненько так может приключиться неприятная вещь типа фрагментации памяти, приходится либо создавать пулы памяти и с ними работать, либо использовать что-то типа jemalloc/tcmalloc. Но тут задача на задачу не приходится, да. Иногда одно лучше, иногда другое.

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

Тоже поржал бы.

Moisha_Liberman ★★
()
Ответ на: А я и вспоминать не буду. от Moisha_Liberman

Признание енота

Зачем решать несуществующую задачу?

Это признание в собственном хелловордстве. Мы тут про софт, а не про игрушечные поделки, если что.

anonymous
()
Ответ на: Именно. от Moisha_Liberman

Выброс

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

anonymous
()
Ответ на: Пффф... от Moisha_Liberman

Много

Это говорит только о том, что кода много.

% говнокода там за сто, в твоём Си. Радоваться нечему. Си — он как прокисшее тесто, расползается везде и занимает место, сидит на нём, воняет и ко всему липнет.

anonymous
()
Ответ на: Много от anonymous

Си — он как прокисшее тесто, расползается везде и занимает место, сидит на нём, воняет и ко всему липнет.

В цитатник!

anonymous
()
Ответ на: Признание енота от anonymous

Т.е., Вы хотите сказать...

Что во всех 100% случаев Ваших программ Вам была нужна координирующая таблица (она же vtable)?

Почему она? Потому что при записи в стиле ООП на С компилятор её создавать не будет. А вот компилятор С++ её создать обязан. Без неё не получится использовать наследование (точнее, позднее динамическое связывание).

То есть. Вы только что заявили что во всех 100% случаев Ваших программ, Вы использовали наследование. Я Вас правильно понял?

Но это тогда либо Вы незнамо что программируете, либо не знаете что объекты нужны вообще не во всех программах. Можно и без них. И очень часто даже нужно без них, т.к. они привносят только ненужные усложнения. Следовательно, наследование и всё что с ним связано можно отправить вослед за Вами. В лес (буду мягок). А так-то Вы поняли куда, да? =)))

Мы тут про софт

На основании изложенного выше остаётся понять причем тут Вы. И дело в шляпе. =)))

Moisha_Liberman ★★
()
Последнее исправление: Moisha_Liberman (всего исправлений: 1)
Ответ на: Много от anonymous

Монитор смузеточить начал...

Да... =) Это как же Вас на лорчик-то занесло?

Moisha_Liberman ★★
()
Ответ на: Выброс от anonymous

Хорошая методика.

Работает. Да и сам использую.

а ты просто хеловордщик

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

Moisha_Liberman ★★
()
Ответ на: Какая отличная шутка! от Moisha_Liberman

Енот Петросян

приходится либо создавать пулы памяти и с ними работать, либо использовать что-то типа jemalloc/tcmalloc

В том-то и дело, что в кабине программиста Си всего один переключатель — если что-то не так с памятью, то надо поменять аллокатор. И это единственное решение, что может посетить их.

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

Как?

вот как надо закрывать/освобождать void* ?

Вам маны подсказать или сами найдёте? И да, в подразумеваемом Вами случае это poor design. Не судьба, да..

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

Зерокост raii - мифология дошколятская.

Поясни, пожалуйста.

anonymous
()
Ответ на: Коротко. от Moisha_Liberman

Закрываю файл или использую free(). А что, нужно что-то ещё кроме системных функций, использующих системные вызовы?

Так вот не теряя контекст объясните, почему RAII хуже

anonymous
()
Ответ на: Т.е., Вы хотите сказать... от Moisha_Liberman

Енот-полоскун

Что во всех 100% случаев Ваших программ Вам была нужна координирующая таблица (она же vtable)?

Не, я про namespace isolation в том числе и для статики. Для хелловордов такая проблема не стоит.

anonymous
()
Ответ на: Енот-полоскун от anonymous

Namespace isolation...

Это для тех говнокодеров, которые не понимают что такое «модульное программирование» и что такое «область видимости». И не знают какие они бывают в том же С.

Именно для них ввели эту подпорку. Без неё они норовят в говно соскользнуть. =)))

Moisha_Liberman ★★
()
Ответ на: Хорошая методика. от Moisha_Liberman

Енот Переход

Переход на личности

Констатация факта.

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

Не теряя контекст объясняю.

Он просто на хер ненужен.

Так понятно?

Moisha_Liberman ★★
()
Ответ на: Надо. от Moisha_Liberman

Как брали, так и возвращайте.

Т.е. пишите тонны однообразного кода руками, захламляя код, если ресурсов несколько, то извольте или ад if-else или еще больший ад с goto устраивать? А еще не забывайте про все ретурны из функции и т.д. и т.п.?

А еще это повторять это в каждой функции, где ресурс нужен?

Ради чего?

anonymous
()
Ответ на: Енот Петросян от anonymous

Интересно.

в кабине программиста Си всего один переключатель — если что-то не так с памятью, то надо поменять аллокатор

Вы всерьёз хотите сказать что в Вашей кабине полно рычажков по управлению памятью, которые не используют системные вызовы? Или это просто от дураков подале внутренности и потроха убрали, чтоб неровен час чего не вышло?

Но нет. Мы, сишники, не дураки. Точно. =)))

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

Беда с вами...

Вы ставите говносреды на электроне, которые не осиливают простейшие сниппеты, которые vim умеет х.з. сколько лет. Например, одним сниппетом можно и malloc и free вставить.

И столько лет вы зачем-то пытаетесь писать код вообще. И зачем? =)))

Moisha_Liberman ★★
()
Ответ на: Беда с вами... от Moisha_Liberman

Например, одним сниппетом можно и malloc и free вставить.

Отлично подходит для хеловворда строк на 100, ну максимум 200.

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