LINUX.ORG.RU

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

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

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

Безусловно, но эту проблему успешно решают библиотеки.

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

Ты весь код в топике понял?

весь кусок в стиле синьора, других не читал

Как много времени на это ушло?

2-5 секунд, не засекал

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

зависит от настроения и от того, насколько нетривиальное

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

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

Профита от того, что читать меньше не будет никакого, если это потребует большей внимательности.

Зависит от того, насколько меньше надо читать.

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

Безусловно, но эту проблему успешно решают библиотеки.

Ну да, библиотеки - это такие волшебные места, в которых код сразу становится простым, кратким и ясным.

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

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

У меня другая перспектива просто. Мне часто приходилось писать на разных языках одновременно (переодически ловя баттхёрт с «уникальных фич» конкретного языка), а ещё я успел погнить занимаясь поддержкой чужого легаси. Плюс усталость от крайне высокоурового херак-херака в проде, когда общий мотив «лишь бы быстрее запилить», а я потом за голову хватаюсь, видя чего там нахерачили. Что для тебя ограничения, то для меня благо, ибо не придётся в итоге подчищать за другими, а возможность размять мозги велосипедя и костыляя меня скорее развлекает.

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

Кряхтения в отладке гораздо больше от динамической типизации.

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

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

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

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

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

Зато работает не как говно! Шашечки или ехать?

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

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

Если в большой C++-программе доходит до значительных изменений в архитектуре, то это сложно и надолго. В Лиспе проще.

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

Вы повторяете фанбоев сишки, что не удивительно. Либы не расширяют язык. Вы не можете добавить ADT либой. Или async. Или исключения. Есть вещи, которые должен уметь сам язык.

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

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

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

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

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

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

Мысли об архитектуре мало зависят от языка. А вот качество реализации зависит от выразительности языка непосредственно. Условные «простые» языки (Си, Go) тупо кладут соблюдение всего, что не выразимо в языке, на программиста.

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

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

Надо расширять сознание-то. Я тоже фанбоем плюсоватым был когда-то.

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

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

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

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

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

Я про приведение char* к string

так не будет его, т.к. char* не будет

кстати идеальный пример: во многих проектах char* и не используется

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

Надо расширять сознание-то

Нет, спасибо. Но ты продолжай.

Я тоже фанбоем плюсоватым был когда-то.

Если я когда-то и был фанбоем плясов, это было 20+ лет назад.

всё - суть маш.код. А если копнуть глубже, то и маш.код - фигня.

И пчёлы.

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

но jollheef утверждал, что Rust не смогу

А где я утверждал, что ты не сможешь понять Rust?

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

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

Для меня благо - это жесткие гарантии компилятора. Go их не имеет в принципе. Прям как сишка, которую я ненавижу ещё сильнее.

не имеет в принципе

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

Да, ты пишешь какую-то несуразицу.

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

А строковые литералы? Это же и есть char*.

Ну и изобретать свой сабсет плюсов для каждого проекта - так себе занятие.

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

Чего ещё ожидать от гофера.

Я вообще-то привёл примеры того, чего нет в го. И либы тут ни как не помогут.

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

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

Чего ещё ожидать от гофера.

Я не являюсь ни гофером, ни жабистом, ни кем-бы то ни было еще. Я пишу на всем, в том числе и на Rust.

Так что перекладывать свою зашоренность на других не надо.

Я вообще-то привёл примеры того, чего нет в го.

Что не никак не опровергает тот факт, что «гарантии компилятора. Go их не имеет в принципе» — бред сумасшедшего.

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

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

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

Это ручками надо. Хотелось бы ошибку компиляции. Для чисел вот есть у gcc/clang, а на счет строк не уверен. Ну и для кастомных типов никак не запретить.

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

Я не являюсь гофером

Это не мешает вам поливать раст помоями в каждой теме.

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

Для моего текущего проекта мне нужно: дешёвый FFI в обе стороны, отсутствие GC, маленький размер бинаря, статический бинарь.

Ну и хотелось бы: cargo, перечисления, ADT, pattern matching, итераторы, константность, удобная обработка ошибок, дженерики, строгая статическая типизация, вывод типов, макросы, высокая производительность, стектрейсы из коробки.

Чем мне может помочь Go? Или любой другой ЯП?

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

Это не мешает вам поливать раст помоями в каждой теме.

Потому что в темы про Rust сбегается большое количество фанатиков, которые проповедуют то, чем Rust не является.

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

Для моего текущего проекта мне нужно: дешёвый FFI в обе стороны, отсутствие GC, маленький размер бинаря, статический бинарь.

маленький размер бинаря

Так тебе и Rust тогда не подходит. Конец истории.

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

Сначала ты писал про статические бинари, а теперь про библиотеки.

Ты точно понимаешь о чем пишешь? Что-то сдаётся, что нет.

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

Что за херню я только что прочитал?

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

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

Вы в курсе чем отличается бинарь от .so на лине? Спойлер: ни чем.

Ну и речь шла про то, что не нужно ставить рантайм. Бинарь тягает всё с собой.

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

Потому что в темы про Rust сбегается большое количество фанатиков, которые проповедуют то, чем Rust не является.

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

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

вы в курсе чем отличается бинарь от .so на лине? Спойлер: ни чем.

Спойлер: то, что и то (подразумеваю, что под бинарем ты подразумеваешь исполняемый файл) и то является ELF — не значит, что они ничем не отличаются.

Учи мат. часть.

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

маленький размер бинаря

Так тебе и Rust тогда не подходит.

Статические бинарники на Rust можно и в несколько десятков килобайт делать. Остальная часть дискуссии ни о чём. (Почему в игнор нельзя поставить, кстати?)

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

Статические бинарники на Rust можно и в несколько десятков килобайт делать.

Пример в студию, пожалуйста.

Deleted
()
Ответ на: комментарий от Deleted
#![feature(lang_items, start)]
#![no_std]

use libc;

#[start]
fn start(_argc: isize, _argv: *const *const u8) -> isize {
    unsafe { libc::printf(b"Hello, world!.\0".as_ptr() as *const i8); }
    0
}

6048 байт после strip.

130Кбайт, если использовать println!() и lto.

red75prim ★★★
()
Последнее исправление: red75prim (всего исправлений: 2)
Ответ на: комментарий от Deleted

И какое отношение Rust имеет к размеру libc? Правильно, никакого. К чему libc не прилинкуй статически, всё будет большое (или нет с lto).

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

И какое отношение Rust имеет к размеру libc?

Удобный подход. Не использовать фичи Rust, использовать unsafe, дергать функцию из libc и внезапно говорить, что итоговый результат каким-то образом характеризует Rust с хорошей стороны.

Типичная шиза фанатиков.

К чему libc не прилинкуй статически, всё будет большое (или нет с lto).

Как выше отмечает RazrFalcom — не все. При использовании musl статические исполняемые файлы действительно небольшие.

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

Не использовать фичи Rust, использовать unsafe, дергать функцию из libc и внезапно говорить, что итоговый результат каким-то образом характеризует Rust с хорошей стороны.

Вы каким-то неправильным местом читаете.

Hello world на Rust - 174KiB.

Hello world на C++ - 1.2MiB.

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

Так ты же сейчас хеловорд на сишке написал, только ректальным способом. Вот примерно так и пишут мамкины растофаны-системщики. А растофаны-вебельщики так же ректально пишут питоно-подобную шнягу, а потом считают миллисекунды выигрыша и трясут типами (которые им только мешают).

bread
()
Ответ на: комментарий от RazrFalcon
  1. C++ — один из худших ЯП в этом мире (хотя последний стандарт мне даже почти нравится). С ним разве что Rust может сравниться в уродстве, но я бы его для сравнения все равно не брал.

#include <cstdio>
int main() {
    printf("Hello, world\n!");
    return 0;
}

$ clang++ test.cpp
$ du --apparent-size -hcs a.out
14K    a.out
14K    total
  1. Размер бинарей в современном мире не имеет почти никакого значения. Мне очень странно слышать, когда люди придумывают себе ограничения вида «бинарник должен быть очень маленьким», хотя речь далеко не о stm32.
Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.