LINUX.ORG.RU

C with objects

 


1

7

есть ли ЯП с таким фичлистом:

- компилируемый в быстрый нативный код

- без обязательного сборщика мусора

- умеет сишные либы (возможно, с небольшими допиливаниями)

- структуры с методами

- не С++

понимаю, что фантастика, но вдруг

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

Так кака в итоге модель работы с памятью у раста? Можно краткое резюме? От unsafe до сборщика...

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

Так кака в итоге модель работы с памятью у раста?

Давай ты прочитаешь http://static.rust-lang.org/doc/master/guide-pointers.html, а потом спросишь, что непонятно (только не спрашивай, почему няшную ~ заменили на угребищный Box<>).

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

меня от него выворачивает наизнанку раз в примерно 5 часов кодинга.

и поэтому приходится кодить не меньше 10 часов в сутки, устаю сильно

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

няшную ~ заменили на угребищный Box<>

Чего тебя вообще так с этого бомбануло :) ? Ну стало на парочку символов больше в операторе и в типе, всего-то. Оно даже не особо часто встречается в идеоматическом идеологически верном коде.

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

От чего именно? Может вам не стоит программировать вообще?

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

А я вот, кстати, читаю и не понимаю, как мне сделать банальный двусвязный список? Только через std::gc/rc средства?

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

А я вот, кстати, читаю и не понимаю, как мне сделать банальный двусвязный список? Только через std::gc/rc средства?

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

Вот стандартная реализация: http://static.rust-lang.org/doc/master/collections/dlist/struct.DList.html

И ее исходник: http://static.rust-lang.org/doc/master/src/collections/home/rustbuild/src/rus...

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

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

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

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

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

Т.е. там что-то в духе

template<class T>
struct Node {
    unique_ptr<Node> next;
    Node *prev;
    T value;
};

template<class T>
struct DList {
    size_t length;
    unique_ptr<Node<T>> list_head;
    Node<T> *list_tail;
};
И методы к этому? Т.е. по сути ничего интересного...

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

штука, позволяющая решать задачи

Вопрос насколько быстро, насколько это удобно и сколько головной боли будет после.

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

Религиозная фигня. Аргументиков бы. Можете попробовать D. Он хотя бы стабилен относительно. Rust еще не родился, Go слабоват.

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

Поэтому никто и не пишет на brainfuck. А C++ берут и часто, поскольку это хороший инструмент, если отбросить религию и лирику.

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

... И методы к этому? Т.е. по сути ничего интересного...

Чего-то в этом духе. А чего интересного ты хотел, собственно?

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

Чаще всего его берут из-за legacy и массы рабочей силы, готовой работать за еду (не хочу никого возвысить/принизить).

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

Чаще всего его берут из-за legacy

Пруф?

и массы рабочей силы, готовой работать за еду (не хочу никого возвысить/принизить).

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

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

Ты точно прочитал ту ссылку, что tailgunner дал? Безопасность работы с памятью на уровне языков с встроенной сборкой мусора в языке без сборки мусора - недостаточная причина для создания такого языка? Серьезно так считаешь?

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

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

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

А я вот, кстати, читаю и не понимаю, как мне сделать банальный двусвязный список?

Правда? Ну давай я за тебя почитаю:

enum List<T> {
    Nil,
    Cons(T, Box<List<T>>),
}

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

Шел бы ты ныть в другое место.

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

няшную ~ заменили на угребищный Box<>

Чего тебя вообще так с этого бомбануло :) ?

Потому что уродство, оправдываемое идиотизмом (ну как можно всерьез воспринимать довод о том, что ~ на некоторых клавах отсуствует?). И, похоже, это только начало.

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

Религиозная фигня. Аргументиков бы

религиозная фигня? аргументиков бы? ты вообще читал? :-D

анонимус уже не торт

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

Правда? Ну давай я за тебя почитаю:

enum List<T> {
    Nil,
    Cons(T, Box<List<T>>),
}

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

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

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

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

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

Я, наоборот, боюсь людей, которые на полном серьезе считают С++ отличным языком без особых недостатков :) .

ИМХО C++ отличный язык без особых недостатков. Просто у тебя руки из жопы.

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

И, похоже, это только начало.

Меня тоже несколько пугают довольно внезапные начинания по перепиливанию константности и уникальности, все-таки их не только pcwalton поддерживает - http://www.reddit.com/r/rust/comments/25i544/babysteps_focusing_on_ownership_... . Но, может, это и не такая плохая идея, я пока для себя не решил.

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

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

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

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

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

Так в чем раст будет лучше C++ в более-менее серьезных задачах? Есть какие-нибудь трустори или еще что-то такое? Я так-то читать читаю про раст постоянно, а почувствовать реальный профит не могу... Не в бою же применять.

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

Так в чем раст будет лучше C++ в более-менее серьезных задачах?

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

Да, от всего на всего это не спасет, конечно, но вполне себе поможет писать более надежный код.

Есть какие-нибудь трустори или еще что-то такое?

Рано еще для трустори о больших успехах.

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

но вполне себе поможет писать более надежный код

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

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

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

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

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