LINUX.ORG.RU
Ответ на: комментарий от tailgunner

Зачем?

Чтобы не размазывать лапшой по тексту именованные функции, калбэки в частности, + «захват окружения»

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

Чтобы не [...]

Чего тебе не хватает в замыканиях, которые есть?

«захват окружения»

Посиди и подумай, как бы ты реализовал захват окружения в языке без GC.

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

как бы ты реализовал захват окружения в языке без GC.

Управляемыми, как в плюсах

В Си++11 возвращение лямбды, захватывающей окружение по ссылке - UB. Это не говоря о том, что лямбды Си++ - это не совсем замыкания.

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

Это был проект на Си++. Кстати, забавная цитата со ссылки:

Back when you were at Berkeley you were enthusiastic about writing systems code in Java. I remember listening to you talk about what a good idea it was during your dissertation talk ...

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

В Си++11 возвращение лямбды, захватывающей окружение по ссылке - UB

Ага.

Это не говоря о том, что лямбды Си++ - это не совсем замыкания.

Ну так без GC же. С задачами справляются.

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

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

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

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

В Си++11 возвращение лямбды, захватывающей окружение по ссылке - UB

Ага.

А разрабы Rust считают это неприемлемым. Странные люди, да? %)

подход D

В D есть сборщик мусора.

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

А разрабы Rust считают это неприемлемым. Странные люди, да? %)

Да. Считать пользователей языка идиотами(как делают в Java и C#, например) - плохая идея. Особенно для замены C и C++.

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

А разрабы Rust считают это неприемлемым. Странные люди, да? %)

Да.

Просто у них цели не совпадают с твоими.

Считать пользователей языка идиотами

Мачо-программисты в треде, все в «Запорожец»!

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

А какие у них цели?

Rust is a programming language with a focus on type safety, memory safety, concurrency and performance. It is intended for writing large-scale, high-performance software that is free from several classes of common errors. Rust has a sophisticated memory model that encourages efficient data structures and safe concurrency patterns, forbidding invalid memory accesses that would otherwise cause segmentation faults. It is statically typed and compiled ahead of time.

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

Лозунги, одни сплошные лозунги. Впрочем я так бешусь оттого, что когда-то тоже верил в rust. Может и сейчас немного верю, но, блин, не пойдет с плюсов и си народ на него...

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

Чего тебе не хватает в замыканиях, которые есть?

Хм, я уже не уверен, что именно в замыканиях...

«Метод» получает замыкание как параметр, пихает его в хеш-таблицу, после чего должен передать ссылку на замыкание в процедуру регистрации. Вот это вот

note: `callback` moved here because it has type `'a |~[~str]| -> ~str`, which is 
a non-copyable stack closure (capture it in a new closure, e.g. `|x| f(x)`, to override)
достало меня до такой степени, что ссылку я уже достаю из самой хеш-таблицы find-ом :(

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

Лозунги, одни сплошные лозунги

Лозунгами можно считать «intended for», остальное уже реальность.

блин, не пойдет с плюсов и си народ на него...

Возможно. Но это не причина вводить в язык заведомо сломанные фичи.

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

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

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

Но это не причина вводить в язык заведомо сломанные фичи.

Ты правда считаешь захват по ссылке в C++ сломанной фичей?

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

Ты правда считаешь захват по ссылке в C++ сломанной фичей?

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

А для Си++ - одной сломанной фичой больше или меньше, неважно. И да, фича сломана.

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

но безопасность достигается за счет ограничений

пффффф...

А для Си++ - одной сломанной фичой больше или меньше, неважно. И да, фича сломана.

Что же в ней сломанного? Используешь правильно - все правильно работает, используешь неправильно - получаешь бяку. Так и надо. А то получается, что лучшее средства от головной боли - топор...

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

Используешь правильно - все правильно работает, используешь неправильно - получаешь бяку.

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

Удачи в правильном использовании Си и Си++.

</thread>

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

пропорции капиш?

golang/Java == C/x

что за язык x который на момент распространения С занимал прочно положение подобное положению жабы сейчас .

pl/i не вариант .(по твоему коментарию судя)

тогда что?

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

Это фигня. Продакшеновый Go на том же уровне.

Ты прав, всё фигня. Продакшеновый Go, также как и Rust в будущем, каждый для своей области — например, Go в ряде типичного класса задач large-scale приложений будет выгоднее, чем Rust, впрочем, последний, конечно, из той же песни, однако, несколько ниже уровнем — что и не всегда нужно, но важно, и он тоже будет. Это здорово.

Если тенденции идут в правильном направлении, то Rust и Go — по ходу условий — взаимозаменяемы в тех или иных аспектах и будут идти рука об руку.

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

Ты вообще воспринимаешь какую-нибудь информацию из реального мира, или всю генерируешь как продукт жизнедеятельности собственного мозга? Вон вверху дали ссылку о переписывании небольшого проекта с Си++ на Go. Там четко сказано (автором и комментаторами), что ниша Go - это серверсайд вообще и вебесерверный серверсайд сириоус ынтерпрайзес. Как раз та ниша, которую сейчас занимает Ява.

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

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

именно я прошу тебя внимательно увидеть в пропорции

как Го который ровно конкурент жабки в её нише и сам Го попроще всёж жабоэнтерпрайза

так и С пришёл на смену какому(каким) языкам в своё время? т.е в какой язык тогда уже был в нише в которую С оказался лучше вписаным.

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

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

В то время C был языком для всего, а не только для низкоуровневого байтодрочерства. Поэтому сравнивать его можно с другими языками для всего, существовавшими в то время. Лисп, B, форт, фортран…

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

дружище, осиль уже запятые, сплошное «казнить нельзя помиловать»

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

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

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

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

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

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

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

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

anonymous
()

Почему на шутауте недоступны исходники тестов на Rust? (везде в make rm yoba.rs)? Может это вброс?

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

Только эти умные парни почему-то не торопятся писать на чем-то другом

Потому что альтернативы нет. Но это не делает убогий Си менее убогим.

И вообще это их сознательный выбор.

«Any color you like as long as it's black» (ц)

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

Не существует убогости и красоты в отрыве от шкалы, относительно которой можно мерить. Если у си нет альтернатив, значит он и не убор и не красив. Это просто си.

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

Не существует убогости и красоты в отрыве от шкалы, относительно которой можно мерить. Если у си нет альтернатив, значит он и не убор и не красив. Это просто си.

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

Не существует убогости и красоты в отрыве от шкалы, относительно которой можно мерить.

Но ведь шкала существует.

Если у си нет альтернатив

Лет 25 назад на Си писали все подряд, а сейчас - только системный софт. Нет альтернатив, ага.

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

Но ведь шкала существует.

Если существует шкала, значит существуют альтернативы.

Лет 25 назад на Си писали все подряд, а сейчас - только системный софт

Нет, пишут до сих пор даже простой десктоп. Все, что писали раньше, то пишут и сейчас.

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

Альтернатива может быть воображаемой, никто не мешает вам представить себе язык с любым набором возможностей. Можем же мы представить себе кентавра, сфинкса...

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

Если существует шкала, значит существуют альтернативы.

Твои выводы всё более абстрактные и странные.

Лет 25 назад на Си писали все подряд, а сейчас - только системный софт

Нет, пишут до сих пор даже простой десктоп

Ну да, поехавщие луддиты из Гнома. Хотя даже у них сейчас смесь Си и JS.

Все, что писали раньше, то пишут и сейчас.

okay.jpg

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

Альтернатива может быть воображаемой

Альтернатива, пожалуй, нет, но в этом и нет необходимости. Ada, Modula-3, Cyclone - вполне реальные языки, нацеленные на системное программирование. Это не говоря уже об исследованиях в области ЯП.

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

Критерий один - практические выгоды от использование ЯП. Если бы замена ЯП приводила к качественному улучшению написанных на нём программ, ябл. давно бы отказался от использования «устаревшего» и не надёжного Objc. И вообще зачастую нет никаких проблем выбрать в качестве ЯП, например, SML. Написать биндинги для существующих библиотек не проблема для крупной корпорации. Замена C на некий X ни к чему хорошему на практике не приводит. Основной критерий талант и опыт программистов, а не свойства ЯП.

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

Критерий один - практические выгоды от использование ЯП

Спасибо, Капитан.

Замена C на некий X ни к чему хорошему на практике не приводит

Что значит «замена»? Тупо переписывание вообще редко приводит к чему-то хорошему, даже если переписывать с Си на Си. Но современные компиляторы, браузеры, игровые движки не пишут на Си. «Замена C на некий X» уже произошла, братья живы.

Более того... даже там, где позиции Си сейчас непоколебимы, в ядрах ОС, используется не чистый Си. В ядре NT - Си с SEH, в ядре Linux - с GNU-расширениями и аннотациями sparse.

Основной критерий талант и опыт программистов, а не свойства ЯП.

Где-то я это уже слышал... а, вот: «лучше быть богатым и здоровым, чем бедным и больным».

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

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

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

Языки программирования не устаревают, они эволюционируют как естественные языки

Нет устаревших языков программирования как нет устаревших научных знаний

Добро пожаловать на новый уровень абстракции. Надеюсь, тебе там не одиноко.

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