|
2.9, A.Stahl (ok), 10:50, 19/03/2017 [^] [^^] [^^^] [ответить]
| –7 +/– |
Да ничем. Просто прикрутили автоматическое управление памятью для тех, для кого это проблема.
| |
|
3.22, A (?), 11:53, 19/03/2017 [^] [^^] [^^^] [ответить]
| –7 +/– |
>>при этом обходясь без использования сборщика мусора и runtime
заметку не читал но осуждаю.
| |
|
2.10, Аноним (-), 10:52, 19/03/2017 [^] [^^] [^^^] [ответить]
| –2 +/– |
За счет встроенных возможностей статического анализа позволяет применять оптимизации работы с памятью, которые в с++ не возможны или требуют очень сложного анализа. И вне секций unsafe обеспечивает безопасность.
| |
|
3.78, Вареник (?), 16:42, 19/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
>> За счет встроенных возможностей статического анализа
- У кого-то проблема запустить статистический анализатор в другом ЯП?
Значит проблема не в коде....
| |
|
|
5.90, Аноним (-), 17:30, 19/03/2017 [^] [^^] [^^^] [ответить]
| +3 +/– |
Речь не о статических анализаторах ошибок и уязвимостей в коде. Речь об анализе кода компилятором. В С++ нет встроенного динамического массива. Массивы работают через указатели. Указатели же не несут данных о памяти, на которую указывают. Компилятор в ряде случаев не может определить перекрываются ли копируемые диапазоны и применить соответствующие оптимизации. В Rust данная ситуация исключена.
| |
|
6.177, Вареник (?), 15:05, 20/03/2017 [^] [^^] [^^^] [ответить]
| –2 +/– |
> В С++ нет встроенного динамического массива. Массивы работают через указатели.
- Поэтому я и спокоен за С++, когда вижу какие глупости пишут его критики, расхваливая сырые поделки на замену :)
То анализатор не знают как запустить, то массивы в современном С++ хорошего стиля - "через указатели", которые "перекрываются"...
| |
|
|
4.116, ferux (ok), 21:18, 19/03/2017 [^] [^^] [^^^] [ответить]
| +4 +/– |
Дело в том, что возможности и сложность реализации статического анализатора сильно зависит от языка.
Для C++ сколько анализаторов не писали, пока не могут гаранитровать безопасность данных, потому что с одной стороны в языке богатый синтаксис (всё не проверишь), а с другой стороны мало ограничений на корректную программу.
В Rust же благодаря налагаемым ограничениям на корректную программу, безопасность данных гарантировать удалось.
| |
|
|
|
3.179, 123 (??), 15:10, 20/03/2017 [^] [^^] [^^^] [ответить]
| –1 +/– |
ХЗ, может это просто LLVM лучше оптимизирует на этих задачах.
| |
|
|
1.4, Аноним (-), 10:24, 19/03/2017 [ответить] [﹢﹢﹢] [ · · · ]
| –14 +/– |
Но зачем, если есть си? Тот же вопрос относится и к любому другому языку, кстати. А теперь, хейтеры, внимание. Даю команду атаковать ненавидимый вами си и лично меня.
| |
|
2.5, Аноним (-), 10:38, 19/03/2017 [^] [^^] [^^^] [ответить]
| +6 +/– |
В си очень просто отстрелить себе ногу, а раст это шотган с предохранителем.
| |
2.7, Аноним (-), 10:44, 19/03/2017 [^] [^^] [^^^] [ответить]
| +3 +/– |
>Напомним, что язык Rust сфокусирован на безопасной работе с памятью и обеспечении высокого параллелизма выполнения заданий. | |
|
|
|
5.137, Аноним (-), 02:40, 20/03/2017 [^] [^^] [^^^] [ответить]
| –2 +/– |
Синтетические бенчмарки сосут. Чтобы понять с какой скоростью оно реально работает и сколько при этом жрёт - запусти демку "нового" FF или распиаренный redox. Гарантированно получишь разрыв шаблона.
| |
|
6.142, Аноним (-), 04:30, 20/03/2017 [^] [^^] [^^^] [ответить]
| +3 +/– |
> Синтетические бенчмарки сосут.
> Чтобы понять с какой скоростью оно реально работает и сколько при этом жрёт - запусти демку "нового" FF
И с чем ты собирался его сравнивать?
> или распиаренный redox.
По сравнению с чем он "сосeт", умник? С линухом? Ты не в курсе, что такое микроядро или Proof of Concept, причем реализованый считай что "в одно рыло"?
| |
|
7.144, Аноним (-), 05:31, 20/03/2017 [^] [^^] [^^^] [ответить]
| –4 +/– |
По сравнению со "старым", негодным FF на c++, который ужас-ужас.
> Ты не в курсе, что такое микроядро или Proof of Concept
Твои маняманёвры очень забавны. Впрочем так обычно и бывает, когда растофанатика приземляют на грешную землю.
| |
|
|
|
10.174, Аноним (-), 14:51, 20/03/2017 [^] [^^] [^^^] [ответить] | +2 +/– | О, увидел знакомое слово и опять пукан переклинило Дорогой ыкспердус, движок ог... большой текст свёрнут, показать | |
|
|
|
|
|
|
|
|
2.12, Аноним (-), 11:00, 19/03/2017 [^] [^^] [^^^] [ответить]
| +2 +/– |
Кому нужна свобода - Си. Кто готов к дополнительным правилам и ограничениям, обеспечивающим безопасность и увеличение скорость за счет большего количества возможных оптимизаций компилятором - Rust.
| |
|
|
|
5.136, Аноним (-), 01:57, 20/03/2017 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Только с ним и получается.
Дай угадаю - ты из тех, кто и на плюсах будет писать в сишном стиле, а потом резать правду-матку про негодность «надстройки над Си» на форумах?
| |
|
|
3.138, Аноним (-), 02:41, 20/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
"Тот кто жертвует свободой ради «безопасности» в итоге не получает ни того ни другого" © :-)
| |
|
|
|
6.175, Аноним (-), 14:58, 20/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
> Еще как относится.
Что, тоже хотят заставить платить налог на защиту?
| |
|
7.182, Аноним (-), 15:21, 20/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
Для деревянных поясняю, любой нетривиальный софт на русте будет содержать преизрядное количество unsafe'ов, а bdsm с компилятором при этом никуда не денется.
Т.е. и свободу отняли и безопасности не завезли.
| |
|
|
|
4.188, анонимус вульгарис (?), 16:49, 20/03/2017 [^] [^^] [^^^] [ответить]
| –2 +/– |
> "Тот кто жертвует свободой ради «безопасности» в итоге не получает ни того ни другого" ©
Обратное тоже верно. ©
| |
|
|
|
1.6, Аноним (-), 10:40, 19/03/2017 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Подскажите, кто в теме. Вот безопасное управление памятью я ещё представляю без gc и runtime. Concurrency я ещё представляю без рантайма, но как без него может работать параллельность (многопоточность) кода?
| |
|
|
3.11, angra (ok), 10:56, 19/03/2017 [^] [^^] [^^^] [ответить]
| +1 +/– |
В невозможности без рантайма организовать green threads. То бишь придется ограничится потоками и процессами ОС. Хотя это как раз к concurrency, а не к распараллеливанию.
| |
|
4.14, Аноним (-), 11:29, 19/03/2017 [^] [^^] [^^^] [ответить]
| +1 +/– |
вы неправильно понимаете что имеют ввиду под runtime в новости. Имеется в виду что это базовая возможность языка.
| |
|
5.17, angra (ok), 11:37, 19/03/2017 [^] [^^] [^^^] [ответить]
| +3 +/– |
А может стоит пользоваться общепринятым значением термина, а не изобретать своё?
| |
|
4.16, Аноним (-), 11:37, 19/03/2017 [^] [^^] [^^^] [ответить]
| –1 +/– |
Да, именно в этом.
Из новости в новость пишется о высоком распараллеливании без рантайма. Как это работает?
Напомню, что concurrency совсем не параллельность. А то, что разные горутины могут выполнятся одновременно - это заслуга операционной системы.
| |
|
5.20, angra (ok), 11:46, 19/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
> А то, что разные горутины могут выполнятся одновременно - это заслуга операционной системы.
Ну тогда уже это заслуга не ОС, а наличия нескольких процессоров и/или нескольких полноценных(не hyperthreading) ядер в одном процессоре.
| |
5.36, freehck (ok), 12:33, 19/03/2017 [^] [^^] [^^^] [ответить]
| +2 +/– |
>>>> Concurrency я ещё представляю без рантайма
>>> А в чем видится проблема?
>> В невозможности без рантайма организовать green threads.
> Напомню, что concurrency совсем не параллельность.
Ребята, я вас не понимаю. Green threads - это как раз реализация concurrency и есть. Как вы его представляете без рантайма? Обязательно должен быть менеджер зелёных тредов в процессе.
| |
|
|
7.51, freehck (ok), 13:01, 19/03/2017 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Я как бы об этом и сказал.
Да я адресовл это вообще-то к анониму #6 и #16
| |
|
6.62, Аноним (-), 14:05, 19/03/2017 [^] [^^] [^^^] [ответить] | +1 +/– | Я не использовал термином green threads т к не знаю его, я подумал, что товарищ... большой текст свёрнут, показать | |
|
7.65, Аноним (-), 14:25, 19/03/2017 [^] [^^] [^^^] [ответить]
| –2 +/– |
Давайте тогда уж использовать полностью русские термины.
concurency - конкурентность, когда поток(нить) один и задачи конкурируют между собой за доступ к нему. Всегда должен быть планировщик который будет разруливать кто сейчас работает.
Multithreading - паралельность, когда много потоков, один поток одна задача. Планировщик встроен в ОС.
>> то, о чем пишется в каждой новости.
на заборе тоже пишут, надеюсь мысль ясна.
| |
7.76, angra (ok), 16:22, 19/03/2017 [^] [^^] [^^^] [ответить] | –1 +/– | Параллелизм это физическое одновременное исполнение кода на разных процессорах и... большой текст свёрнут, показать | |
|
|
|
4.54, freehck (ok), 13:04, 19/03/2017 [^] [^^] [^^^] [ответить]
| –1 +/– |
> green threads
Кстати, green threads - это, насколько мне известно, явовский термин. Не подскажете, как называют зелёные треды в других языках программирования? Есть общее слово?
| |
|
5.61, Аноним (-), 13:38, 19/03/2017 [^] [^^] [^^^] [ответить]
| +1 +/– |
это просто название абстракции. green threads, coroutines, fibers, goroutines. Суть одна это event loop.
| |
|
|
7.93, Аноним (-), 17:39, 19/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
Ну вот давайте процитирую из главной gevent.
"gevent is a coroutine -based Python networking library that uses greenlet to provide a high-level synchronous API on top of the libev event loop."
| |
|
8.97, angra (ok), 17:46, 19/03/2017 [^] [^^] [^^^] [ответить] | –1 +/– | И что То, что какая-то либа в питоне одно маскирует под другое, как то меняет, ... текст свёрнут, показать | |
|
|
|
5.170, Аноним (-), 13:48, 20/03/2017 [^] [^^] [^^^] [ответить] | –1 +/– | Нет Термин как ссылка на реализацию означает как-бы нити без поддержки или ... большой текст свёрнут, показать | |
|
4.131, А. Н. ОНим (?), 00:39, 20/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
> В невозможности без рантайма организовать green threads. То бишь придется ограничится потоками
> и процессами ОС. Хотя это как раз к concurrency, а не
> к распараллеливанию.
А кто сказал что оно green threads делает?
| |
4.216, Некулхацкер (?), 19:02, 23/03/2017 [^] [^^] [^^^] [ответить]
| –2 +/– |
Грин или не грин, по-моему, не важно совсем. Псевдо-потоки нужны для тех сред, которым нужно минимально с ОС взаимодействовать (той же Яве). Вот просто по концепции. Это их "фича". А коль такой задачи не стоит, то просто компилятор может некую предложенную на уровне грамматики языка конструкцию переделать в фактическую конструкцию целевой среды исполнения (где-то процессов ОС налепить, где-то потоков в процессе ОС). Вроде так.
| |
|
|
2.64, ferux (ok), 14:19, 19/03/2017 [^] [^^] [^^^] [ответить]
| +1 +/– |
Действительно, как отмечали выше, runtime в Rust есть, но он легковесный и опциональный (ОС же пишут на Rust).
Что касается многопоточности и конкурентного доступа к данным - то тут действительно нужен runtime. Например, он отвечает за работу механизма std::sync::Arc - atomic reference counter.
| |
|
|
|
5.117, Аноним (-), 21:27, 19/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
Следуя вашей логике, функции из сторонних библиотек не являются runtime, а что мы получим если программа не сможет найти эту функцию в библиотеке? сделали call, а там не правильный адрес.
| |
|
6.122, ferux (ok), 21:46, 19/03/2017 [^] [^^] [^^^] [ответить]
| +1 +/– |
В моём грубом понимании runtime - это только тот код, который компилятор добавляет к программам для обеспечения работы синтаксических конструкций языка. Всё остальное может зависеть от рантайма, как, например, функции работы с вводом/выводом, а может не зависеть, как большинство математических функций.
В случае си часть рантайма реализована в crt0.o (https://en.wikipedia.org/wiki/Crt0) - если интересно.
Что касается "не сможет найти эту функцию в библиотеке" - если функциям для работы требуется runtime, это ещё не значит что они его часть. И вообще, если библиотека статическая - runtime для поиска функций не нужен.
| |
|
7.145, Аноним (-), 05:38, 20/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
да, все так. Я просто не особо слежу за растом и хотелось понять, понимает ли собеседник о чем говорит.
| |
|
6.134, А. Н. ОНим (?), 01:17, 20/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
> Следуя вашей логике, функции из сторонних библиотек не являются runtime, а что
> мы получим если программа не сможет найти эту функцию в библиотеке?
> сделали call, а там не правильный адрес.
Получим невозможность использовать эту функцию и вероятно эту отдельную программу. Отдельная программа может нуждаться в специфическом runtime...
| |
|
|
|
|
|
1.13, Аноним (-), 11:19, 19/03/2017 [ответить] [﹢﹢﹢] [ · · · ]
| –3 +/– |
Они бы еще параллельно инструменты развивали. Например Qt Creator заточить, добавить в него подсветку синтаксиса и доки. Servo конечно хорош как доказательство состоятельности языка (будет, если допилят), но без нормальных инструментов язык не взлетит.
| |
|
|
3.30, Аноним (-), 12:16, 19/03/2017 [^] [^^] [^^^] [ответить]
| +7 +/– |
Python признан неисправимым тормозом. Все потихоньку переходят на Go. Инвестировать в заведомо умирающую технологию - очень глупый шаг.
| |
|
4.48, Аномномномнимус (?), 13:00, 19/03/2017 [^] [^^] [^^^] [ответить]
| –3 +/– |
Все потихоньку переходят на Go <=> Инвестировать в заведомо умирающую технологию - очень глупый шаг.
Вы сами себе противоречите.
А ещё вы себе противоречите сравнивая разные сферы. Вы ещё HTML и Go по скорости сравните. Причём только по скорости, а читаемость, гибкость и прочее игнорируете конечно же
Для скорости есть C/C++, которые и пытается подменить Go, но я всё ещё не вижу, чем он лучше уже знакомых и выпиленных до блеска инструментов.
| |
|
5.73, angra (ok), 16:00, 19/03/2017 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Для скорости есть C/C++, которые и пытается подменить Go, но я всё
> ещё не вижу, чем он лучше уже знакомых и выпиленных до блеска инструментов.
Писать и читать код на Go практически также легко как на python. Писать на нем конкурентный код проще чем на python и тем более на C/C++. А скорость лишь немного уступает плюсам и значительно обходит python.
| |
|
6.164, Аноним (-), 13:03, 20/03/2017 [^] [^^] [^^^] [ответить]
| –2 +/– |
Справедливости ради, Go медленнее даже чем java, ибо компилятор и VM последней совершенствовалась очень много лет. Компилятор Go пока не обладает инструментами оптимизации. Взамен нам предлагают скорость самой компиляции, она практически мгновенна. Надеюсь, в будущем будут варианты на выбор
| |
|
|
|
5.143, . (?), 04:59, 20/03/2017 [^] [^^] [^^^] [ответить]
| –1 +/– |
Делают аналоги, с разной степенью успешности. А ви таки зачем спрашиваете? :)
| |
5.167, angra (ok), 13:14, 20/03/2017 [^] [^^] [^^^] [ответить]
| +1 +/– |
> NumPy, SciPy, Matplotlib уже переводят на Go?
А ты считаешь, что там скорость является заслугой питона? Разочарую, скорость там от С и Fortran, а от питона лишь обвязка над либами blas, lapack итд. При этом как только тебе в задаче понадобятся вычисления за пределами реализованных в либах функций, то скорость резко падает.
| |
|
4.180, Вареник (?), 15:13, 20/03/2017 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Python признан неисправимым тормозом. Все потихоньку переходят на Go. Инвестировать в заведомо
> умирающую технологию - очень глупый шаг.
Ядра предпочитают делать на С/C++, обвязки - на Python или C#, бизнес-логику и БД - на Java.
| |
|
3.80, Вареник (?), 16:46, 19/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
> Qt пусть допилят обещанный PySide2 лучше, чем распыляться на это
Вы не поняли. Это не проблема Qt, это целиком проблема раста.
У Qt нет проблемы отсутствия фреймворка или отсуствия языка(ов) :)))
| |
|
|
1.15, Аномномномнимус (?), 11:36, 19/03/2017 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!() }
Прежде чем понять код ПО нужно расшифровать стопицот ненужных аббревиатур. write отрицает аргументы?
println... тяжёлое детство, деревянный паскаль...
let we_dont_use_camel_case
Опять же зачем нужен let и затем указывать тип, если можно сразу указать тип и код будет более читаемый и компактный.
>> It's possible to declare variable bindings first, and initialize them later.
Вообще вещь стрёмная и ненужная.
Короче куда ни ткни, непонятно чем этот ЯП лучше тех, которые давно и надёжно засели в TOP10 и почему все вокруг него так трясутся. Даже Go на его фоне смотрится лучше
| |
|
2.19, Аноним (-), 11:39, 19/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
> Даже Go на его фоне смотрится лучше
Что значит "Даже"? Golang - великолепен.
| |
|
|
4.26, angra (ok), 12:06, 19/03/2017 [^] [^^] [^^^] [ответить]
| +1 +/– |
Почти всем :)
Тут проще перечислить недостатки: размер бинаря, проблемное взаимодействия с Сишными либами, отсутствие прямого контроля за горутинами.
| |
|
5.41, freehck (ok), 12:36, 19/03/2017 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Тут проще перечислить недостатки: размер бинаря, проблемное взаимодействия с Сишными либами
Вас почитать, так становится непонятно, почему Go более популярен по сравнению с тем же OCaml. :)
| |
|
6.47, angra (ok), 12:54, 19/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
Я перечислил недостатки, а не преимущества. Даже если у ocaml не было бы недостатков, это не означало бы, что у него достаточно преимуществ.Ну и конечно нельзя недооценивать фактор поддержки корпорацией.
| |
|
7.57, freehck (ok), 13:13, 19/03/2017 [^] [^^] [^^^] [ответить]
| +3 +/– |
> Ну и конечно нельзя недооценивать фактор поддержки корпорацией.
Ну да. В это всё как правило и упирается. Большая корпорация анонсирует новый язык, стимулирует людей на него переходить, нанимая объёмистый штат людей, заинтересованных в нём. Его начинают перенимать к себе другие крупные компании... Постепенно наращивается критическая масса специалистов в данном конкретном языке, и наконец малому и среднему бизнесу становится выгодно вести разработку именно на них, ибо для него важнее всего - заменяемость работника. А они появляется тогда, когда на рынке много специалистов.
Иными словами, языки, технологии и программные продукты чаще выстреливают не за счёт технического превосходства, а за счёт поддержки со стороны больших корпораций.
| |
|
8.70, Аноним (-), 15:14, 19/03/2017 [^] [^^] [^^^] [ответить] | +/– | http www dedoimedo com computers software-development-cancer html Хорошая стат... текст свёрнут, показать | |
|
|
|
5.140, Аноним (-), 02:47, 20/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
... отсутствием генериков, убогостью кастомных типов, error'ом(!) при неиспользуемой(!) переменной, хипстоватым сообществом... Вы продолжайте, продолжайте.
| |
|
|
|
4.29, angra (ok), 12:11, 19/03/2017 [^] [^^] [^^^] [ответить]
| +3 +/– |
Да не стесняйся ты так, скажи открыто: "мне лень понимать и учить новые ЯП".
TOP10 ЯП сегодня и TOP10 10/20/30/40/50 лет назад мягко говоря различаются. А с твоим подходом надо было остановится еще в 60-х.
| |
|
5.33, Аноним (-), 12:21, 19/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
А что "новые языки" это какая-то самостоятельная ценность и их обязательно все учить ?
| |
|
6.37, angra (ok), 12:34, 19/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
Нет, необязательно. Можно было выучить Fortran 60 лет назад или APL 50 лет назад и программировать на них по сей день.
| |
|
7.42, Аномномномнимус (?), 12:43, 19/03/2017 [^] [^^] [^^^] [ответить]
| –2 +/– |
В текущих реалиях можно выучить пару основных для десктопа, и php/python, html+js+css для веба, и ещё останется лет на 30 что в процессе разработки продуктов по мере появления доп. вопросов (от code style, тестовых фреймворков и инструментария аля IDE, нужных API, до всяких RFC, алгоритмов подавления шумов и специфики железа). И этого будет достаточно чтобы учиться постоянно и не скучать по фортрану.
| |
|
8.74, Аноним (-), 16:01, 19/03/2017 [^] [^^] [^^^] [ответить] | +4 +/– | Задним умом мы конечно все крепки, но только вот 20 лет назад в основных для дес... текст свёрнут, показать | |
|
9.87, angra (ok), 17:10, 19/03/2017 [^] [^^] [^^^] [ответить] | +1 +/– | Согласен Добавлю, что через пять лет может оказаться, что js и css все-таки не ... текст свёрнут, показать | |
9.206, cp (?), 23:20, 20/03/2017 [^] [^^] [^^^] [ответить] | +/– | И мы ничего бы не прогадали CSS в котором десять только основных рецептов центр... текст свёрнут, показать | |
|
|
|
|
5.43, freehck (ok), 12:47, 19/03/2017 [^] [^^] [^^^] [ответить] | +1 +/– | Ну знаете ли Этих новых языков в последнее время попёрло столько, что нет ни вр... большой текст свёрнут, показать | |
|
6.50, angra (ok), 13:00, 19/03/2017 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Ну знаете ли. Этих новых языков в последнее время попёрло столько, что
> нет ни времени, ни сил на них на все. :)
Да не больше, чем в иные времена. И никто не говорит про полноценно учить всё подряд. Но если какой-то язык из года в год увеличивает свою долю, то можно потратить одни выходные на базовое ознакомление, вдруг понравится.
> Берёшь flex+bison (или если не на Си пишешь, но соответствующую своему языку связку lex/yacc), определяешь грамматику и синтаксис - и готово. Таким образом начать разработку нового языка - дело в общем-то плёвое. Вот их и расплодилось столько.
Ты бы хоть поинтересовался в каком году появился yacc.
| |
|
7.59, freehck (ok), 13:19, 19/03/2017 [^] [^^] [^^^] [ответить] | +/– | Я думаю, лучше это делать по мере необходимости Вот пользуешься ты программой, ... большой текст свёрнут, показать | |
|
8.85, angra (ok), 17:06, 19/03/2017 [^] [^^] [^^^] [ответить] | +/– | Я к тому, что написание парсеров за счет существования lex yacc и аналогов стало... текст свёрнут, показать | |
|
9.123, freehck (ok), 21:51, 19/03/2017 [^] [^^] [^^^] [ответить] | +/– | Не совсем Я лишь пояснял, почему их пишут все, кому не лень Я понятья не имею,... большой текст свёрнут, показать | |
|
10.157, angra (ok), 12:21, 20/03/2017 [^] [^^] [^^^] [ответить] | –1 +/– | Практически так и было Код на perl времен cgi pm и тогда это еще был очень хоро... текст свёрнут, показать | |
|
|
|
|
6.86, Вареник (?), 17:06, 19/03/2017 [^] [^^] [^^^] [ответить]
| –2 +/– |
> В общем, я не знаю, когда вылижут Rust, но для начала надо
> дождаться хотя бы нескольких больших FOSS-проектов, написанных на нём.
Без поддержки ТНК уровня фейсбука - никогда.
Но подобным организациям нужна прикладуха, существующие ядра/системные либы их полностью устраивают.
Игроделы не будут переделывать популярные и отлаженные движки на вырвиглазную хрень без либ.
Руст - язык без ниши. Как системный, для игр и вычислений - он запоздал на 30 лет, как прикладной не состоятелен.
| |
|
7.193, анонимус вульгарис (?), 17:06, 20/03/2017 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Руст - язык без ниши. Как системный, для игр и вычислений -
> он запоздал на 30 лет, как прикладной не состоятелен.
Почему же без ниши? У него есть вполне определённая ниша. Правда вот беда, она в точности совпадает с нишей, занятой C++. И чтобы его оттуда вытеснить, языку надо иметь очень много преимуществ. А у rust оно ровно одно — модель памяти. Сомневаюсь, что этого хватит, хотя — время покажет.
| |
|
|
|
4.72, Sw00p aka Jerom (?), 15:53, 19/03/2017 [^] [^^] [^^^] [ответить]
| –1 +/– |
>>но это не должно идти в ущерб читаемости кода и скорости разработки.
какой ещё скорости разработки? что это за понятие "быстро разработать"? писать строки кода (кодинг) это разве разработка?
| |
|
5.88, Вареник (?), 17:11, 19/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
>>>но это не должно идти в ущерб читаемости кода и скорости разработки.
> какой ещё скорости разработки? что это за понятие "быстро разработать"? писать строки
> кода (кодинг) это разве разработка?
На С++ програмист напишет сложную систему медленней, чем на Java, #C, Python, Ruby.
На уровне одной формы/мелкой утилиты разницы никакой. Чем сложней программа - тем больше будет разница.
Rust не дает преимуществ перед С++, наоборот усложняет нечитабельностью.
Это факт. Зачем Вы хотите отрицать очевидное?
| |
|
|
7.114, angra (ok), 20:58, 19/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
Титеретик или тролль?
Ну реализуй любой готовый алгоритм на брейнфаке и сравни со временем его же реализации хотя бы на С.
| |
|
|
9.159, angra (ok), 12:28, 20/03/2017 [^] [^^] [^^^] [ответить] | +/– | Это яркий пример, иллюстрирующий ошибочность твоих разглагольствований о том, чт... текст свёрнут, показать | |
|
|
7.176, Вареник (?), 14:59, 20/03/2017 [^] [^^] [^^^] [ответить]
| –1 +/– |
>> И сей факт в том, что время тратися в основном на проектирование.
- На тестирование, отлаживание, сопровождение (многочисленные доработки по запросам). Внезапно. 90% объема работ.
Есть, конечно, категория архитекторов высокого полета - "напроектировал и сбежал", пока рутина не началась (из которой работа системы и состоит).
UML и ОО-скелет все равно на чем набросать, лишь бы в языке структуры/классы были, а они даже в ассемблере есть. Можно и на русте, не вопрос :)
| |
|
6.219, Некулхацкер (?), 13:06, 24/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
>>>>но это не должно идти в ущерб читаемости кода и скорости разработки.
>> какой ещё скорости разработки? что это за понятие "быстро разработать"? писать строки
>> кода (кодинг) это разве разработка?
> На С++ програмист напишет сложную систему медленней, чем на Java, #C, Python,
> Ruby.
> На уровне одной формы/мелкой утилиты разницы никакой. Чем сложней программа - тем
> больше будет разница.
> Rust не дает преимуществ перед С++, наоборот усложняет нечитабельностью.
> Это факт. Зачем Вы хотите отрицать очевидное?
На Питоне или Руби -- нет. У них нет даже зачаточных инструментов сборки и управления проектом. А на подобные процедуры уходи три четверти времени.
| |
|
7.220, Аноним (-), 21:46, 24/03/2017 [^] [^^] [^^^] [ответить] | +/– | gt оверквотинг удален Потому что это своеобразный индикатор - как только появи... большой текст свёрнут, показать | |
|
|
|
|
|
2.27, incker (?), 12:08, 19/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
Зачем указывать тип, если переменная объявленная через let, как вы написали - будет константа. Не константы объявляются так let mut variable
| |
|
|
4.34, Аноним (-), 12:22, 19/03/2017 [^] [^^] [^^^] [ответить]
| –3 +/– |
Константность - только чтение. Мутабельность - чтение и запись. Т.е. любую переменную мы можем читать, а запись - это дополнительное свойство, которое и надо задавать. В С++ эта логика нарушена.
| |
|
5.44, Аномномномнимус (?), 12:49, 19/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
Как говорят знакомые атеисты: ОГОСПАДЕ!
Переменная (англ. Variable) имеет в основе слово МЕНЯТЬ. Логично что то что меняется не может быть иммутабельным. В противном случае говорят "документация врёт и не соответствует коду".
Прежде чем учить языки программирования, выучи хоть один человеческий, хотя бы на уровне базовой школы
| |
|
6.89, Ordu (ok), 17:28, 19/03/2017 [^] [^^] [^^^] [ответить]
| +2 +/– |
ОГОСПАДЕ.
Филолог в треде о программировании. Зря ты ссылаешься на толковый словарь английского языка, надо было отследить этимологию глагола to vary назад к латыни и древнегреческому, и сослаться на то, что Сократ думал о мутабельных и константных переменных.
| |
6.92, Аноним (-), 17:37, 19/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
Переменная может быть константной и меняться. Тут вообще большое поле для демагогии. Но всё это будут придирки к словам. Факт остается фактом, объект должен быть читаем всегда, а вот изменяем нет.
| |
|
7.105, Аномномномнимус (?), 19:45, 19/03/2017 [^] [^^] [^^^] [ответить]
| –1 +/– |
Константа не может быть переменной. Это тавтология.
Есть язык - интерфейс общения. Его ценность в том, что один объект однозначно и по возможности лаконично (чтобы быстро и эффективно) объяснить что-то другому объекту. Будет объяснять человек человеку, человек программе, программа человеку - не важно. Важно чтобы не было путаницы и неоднозначно понимаемых абстрактных бредней. И именно инженеры обязаны это понимать, у них масса технических терминов именно по этой причине. Ты же не называешь системный блок процессором? Ну пожалуйста, скажи что не называешь?
| |
|
6.217, Некулхацкер (?), 19:19, 23/03/2017 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Как говорят знакомые атеисты: ОГОСПАДЕ!
> Переменная (англ. Variable) имеет в основе слово МЕНЯТЬ. Логично что то что
> меняется не может быть иммутабельным. В противном случае говорят "документация врёт
> и не соответствует коду".
> Прежде чем учить языки программирования, выучи хоть один человеческий, хотя бы на
> уровне базовой школы
Понимаете, есть некая разница между логикой предикатов и логикой высказываний. В данном случае неизменяемая переменная -- честный полноценный предикат. Потому что это не константа и может быть задана непредсказуемо. Но вот измениться после такого, как задана, уже не может. И вы спокойно в таком случае пользуетесь аппаратом логики предикатов.
| |
|
|
4.46, freehck (ok), 12:53, 19/03/2017 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Зачем константы называть variables
Это в Си-подобных языках традиция такая. Многие языки семейств Lisp/Scheme/ML называют это дело binding, т.е. связыванием. Потому что они связывают текстовое имя (символ) с каким-то местом в памяти.
| |
4.75, Ordu (ok), 16:12, 19/03/2017 [^] [^^] [^^^] [ответить]
| +1 +/– |
Константы и read-only переменные -- это разные вещи. Просто подумай об этом, и -- я верю в тебя -- ты увидишь разницу.
| |
|
|
6.112, Аноним (-), 20:35, 19/03/2017 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Про константы не я вбросил, я то знаю разницу
Чуть ниже видно было,
> это по сути read only переменная
"знаток".
| |
|
|
4.91, Аноним (-), 17:32, 19/03/2017 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Зачем константы называть variables в документации и делать иммутабельными из коробки?
Помому что под const обычно подразумевается что-то, вычислямое еще на этапе компиляции. Еще, конкретно в ржавчине у const нет какого-то определенного адреса, он инлайнится. https://doc.rust-lang.org/book/const-and-static.html
А вот let может быть присвоена уже в рантайме, но только один раз. Типа
let foo = user_input_bar(...);
| |
|
5.107, Аномномномнимус (?), 19:59, 19/03/2017 [^] [^^] [^^^] [ответить]
| –1 +/– |
Ты удивишься, но константы инлайнились ещё во времена ассемблера.
Вот выше человек правильно написал - это по сути read only переменная, getter - очень распространённая вещь во многих языках.
Короче печально всё, от понимания "зачем оно", до документации (и терминологии в частности).
| |
|
6.110, Аноним (-), 20:29, 19/03/2017 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Ты удивишься, но константы инлайнились ещё во времена ассемблера.
Ты удивишься, но я не удивлюсь - я в курсе.
Правда, никакими const там не пахло (не надо кивать на .const секции, это немного из другой оперы), но объявления, в зависимости от диалекта, типа "foo EQU x" или "foo = y" как бы намекали нам об этом. Опять же, никакого конкретного адреса, всем все ясно.
> Вот выше человек правильно написал - это по сути read only переменная,
Еще раз, для тех кто в танке - это не переменная. Первое отличие - вычисляемость в компайлтайме. Второе - отсутствие конкретного адреса и прочих "мест обитания", причем "по умолчанию", а не в следсвии оптимизации.
> Короче печально всё, от понимания "зачем оно", до документации (и терминологии в
> частности).
Во-во. Согласен.
| |
|
7.158, Аномномномнимус (?), 12:26, 20/03/2017 [^] [^^] [^^^] [ответить]
| –1 +/– |
Много кто умеет вычислять не меняющиеся переменные на этапе компайлтайма, причём по умолчанию, но они это называют "оптимизация на этапе компиляции", а не делают из этого культ мордования терминологии
| |
|
|
9.199, _ (??), 19:27, 20/03/2017 [^] [^^] [^^^] [ответить] | –1 +/– | Он дятел - сиречь не понимает даже что в правильных Ёзыках константы не имеют не... текст свёрнут, показать | |
|
|
|
|
|
|
|
2.32, Аноним (-), 12:20, 19/03/2017 [^] [^^] [^^^] [ответить]
| –2 +/– |
Дополнительные правила и ограничения - плата за безопасность и увеличение производительности. Пример, как и все подобные, высосан из пальца.
| |
|
3.35, Аноним (-), 12:24, 19/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
Безопасность иллюзорна ибо любой нетривиальный алгоритм будет полон unsafe'ов.
Увеличение производительности пока что не продемонстрировано.
| |
|
|
|
6.151, Аноним (-), 11:37, 20/03/2017 [^] [^^] [^^^] [ответить]
| +2 +/– |
Тебе надо, ты и пиши, в чем проблема? Почему на операциях с памятью Rust оказывается быстрее тебе ответили.
| |
|
|
4.195, анонимус вульгарис (?), 17:17, 20/03/2017 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Безопасность иллюзорна ибо любой нетривиальный алгоритм будет полон unsafe'ов.
95% кода — это тривиальные алгоритмы. Вот там и будет выигрыш в безопасности.
| |
|
3.45, Аномномномнимус (?), 12:51, 19/03/2017 [^] [^^] [^^^] [ответить]
| +2 +/– |
Плата за безопасность - открытость и понятность кода. Когда начинается магия и ересь - безопасность и надёжность заканчивается, начинается security through oscurity и появляются "крайне редкие специалисты", требующие за разруливание этих клубков магической лапши баснословные деньги.
| |
|
4.83, Вареник (?), 16:57, 19/03/2017 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Плата за безопасность - открытость и понятность кода. Когда начинается магия и
> ересь - безопасность и надёжность заканчивается, начинается security through oscurity
> и появляются "крайне редкие специалисты", требующие за разруливание этих клубков магической
> лапши баснословные деньги.
Истину глаголишь. Стартап на чем-то экзотическом, только потому что пареньку с горящими глазами нравится perl, окамл, хруст и т.д. - это проблемы для всего коллектива в будущем и громадные перезатраты усилий.
| |
|
5.84, Вареник (?), 17:00, 19/03/2017 [^] [^^] [^^^] [ответить]
| –1 +/– |
>> Плата за безопасность - открытость и понятность кода. Когда начинается магия и
>> ересь - безопасность и надёжность заканчивается, начинается security through oscurity
>> и появляются "крайне редкие специалисты", требующие за разруливание этих клубков магической
>> лапши баснословные деньги.
> Истину глаголишь. Стартап на чем-то экзотическом, только потому что пареньку с горящими
> глазами нравится perl, окамл, хруст и т.д. - это проблемы для
> всего коллектива в будущем и громадные перезатраты усилий.
Скала, кстати, тоже сюда. Хотя вроде бы хороший язык и с фреймворками все в порядке - получается плохо разгребаемая магическая лапша.
| |
|
|
|
|
1.39, нонанон (?), 12:36, 19/03/2017 [ответить] [﹢﹢﹢] [ · · · ]
| +6 +/– |
"cargo build", "cargo doc", "cargo check" ... Какой-то прямо "cargo cult"...
| |
1.49, Аноним (-), 13:00, 19/03/2017 [ответить] [﹢﹢﹢] [ · · · ]
| –2 +/– |
Когда QT на раст перепишут, тогда он и зарешает, а пока - язык выходного дня.
| |
|
|
3.56, Аноним (-), 13:12, 19/03/2017 [^] [^^] [^^^] [ответить]
| –1 +/– |
Ага, тогда им еще и гуи придумывать, а они и язык пока не могут до стабильного состоянию допилить.
| |
|
4.60, Аномномномнимус (?), 13:22, 19/03/2017 [^] [^^] [^^^] [ответить]
| –1 +/– |
У Qt есть GUI же. И у них нет причин переписывать себя на Rust.
Если же мозилловцы захотят написать на Rust аналог Qt, то это будет не Qt, а другая библиотека. Максимум - у них будет схожее API/ABI и похожие алгоритмы.
К тому же вообще не понятно зачем с нуля создавать то, что и так прекрасно работает, лишь бы была нормальная возможность подключать нужные библиотеки, которая конечно же есть у всех нормальных языков.
| |
|
3.95, Аноним (-), 17:43, 19/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
Это и не требуется. Элементы, требующие производительности и безопасности, можно выделить в отдельные либы на Rust'e. Остальное оставить на с++.
| |
|
4.103, Аномномномнимус (?), 19:29, 19/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
Можно популярнее про производительность и безопасность? Вот прям с примерами. Добавление зоопарка должно добавить или стрёмный, по сравнению со стандартным для Qt, код?
| |
|
|
2.66, skybon (ok), 14:29, 19/03/2017 [^] [^^] [^^^] [ответить]
| –2 +/– |
Вполне возможно, что весь гномостек на него портируют (включая GTK+). librsvg переписывают уже сейчас.
| |
|
3.69, Аноним (-), 15:07, 19/03/2017 [^] [^^] [^^^] [ответить]
| –3 +/– |
уж куда лучше на Swift переписать, которому всего 3 года, но он уже юзабельный с версии 3.
| |
|
4.200, _ (??), 19:30, 20/03/2017 [^] [^^] [^^^] [ответить]
| +1 +/– |
Он А-огороженный и никому кроме заднеприводных не уперся, увы.
| |
|
|
2.82, Вареник (?), 16:54, 19/03/2017 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Когда QT на раст перепишут, тогда он и зарешает, а пока
> - язык выходного дня.
Крику много, но они сами не знают зачем им Rust.
Сферическая вырвиглазность в вакууме.
| |
|
1.81, Вареник (?), 16:52, 19/03/2017 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
Руст - это агрессивная реклама вырвиглазного, неудобного и ненужного.
Фактически аналог хорошего стат. анализатора подается как преимущество, при отсуствии фрейморка, IDE и прочих инструментов.
| |
|
2.98, Аноним (-), 17:48, 19/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
1. Раст, не руст.
2. Стат. анализатор и есть преимущество. Но оно не всем нужно ценой потери свободы.
3. IDE и прочие инструменты еще впереди. Пока на этом языке нет ни одного взлетевшего проекта, т.ч. рано еще.
| |
|
3.109, Аноним (-), 20:16, 19/03/2017 [^] [^^] [^^^] [ответить]
| +1 +/– |
Dropbox. Впрочем, там еще много чего на Go, но весь core - уже на Rust.
| |
|
4.121, Аноним (-), 21:41, 19/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
Dropbox. Впрочем, там еще много чего на Go, но весь core - пока на Rust.(fixed)
| |
|
|
2.120, Аноним (-), 21:40, 19/03/2017 [^] [^^] [^^^] [ответить]
| +1 +/– |
У кого что болит, как гриться... Пока я вижу лишь твою повышенную активность подозрительно напоминающую оказать влияние на мнение других.
| |
|
1.152, Аноним (-), 11:42, 20/03/2017 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
По каждому языку здесь раскручивается холивар. Я полагаю из-за того, что люди боятся, что язык взлетит и его придется учить, чтобы не оказаться в отстоиниках. Как считаете?
| |
|
2.163, Kodir (ok), 13:02, 20/03/2017 [^] [^^] [^^^] [ответить]
| –1 +/– |
Считаю, фигню сказал. Разве боятся апологеты Жабы прихода C#? Кто-то из "сипиписников" оглядывается на D? Нет и нет. Каждый работает в своей нише. Мир ИТ, несмотря на свою кажущуюся стремительность, на деле крайне инертный (как стандарты для патронов). Есть столько легаси кода на древних языках, что практически любой найдёт себе работу по поддержке старого *овна мамонта. Да ещё и оплачивать будут выше из-за "уникальности специалиста".
Радует то, что наметились здоровые тенденции - видны языки-аутсайдеры и языки с явным психическим уклоном создателей - такие просто медленно загнутся. Но любой новый выскочка никогда не заменит существующего болота, так что не переживайте - продолжайте похапэхать. :)
| |
|
3.172, Аноним (-), 14:39, 20/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
> Разве боятся апологеты Жабы прихода C#? Кто-то из "сипиписников" оглядывается на D? Нет и нет.
Не знаю, абсолютно. Я сужу по только по наблюдаемой здесь истерике. Людям плевать на объективные аргументы. И так и по Python и по Go и по Rust. И при том четкая тенденция - держатся за старое (Python) и категорически отвергают всё новое (Go, Rust).
| |
|
4.204, Ordu (ok), 23:17, 20/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
Я уверен, что половина плюющих на аргументы -- тролли, оставшиеся -- хомячки, которые не имеют собственного мнения и субъектности. Нет какого-то глубинного смысла в том, чтобы обращать внимание на тех или этих.
| |
|
|
2.218, Некулхацкер (?), 19:23, 23/03/2017 [^] [^^] [^^^] [ответить]
| –1 +/– |
> По каждому языку здесь раскручивается холивар. Я полагаю из-за того, что люди
> боятся, что язык взлетит и его придется учить, чтобы не оказаться
> в отстоиниках. Как считаете?
Языку для взлёта нужно десятки лет. Нужны иструментарии сборки и развёртывания, тестирования, отслеживания изменений и прецедентов, нужны средства управления жизненным циклом. Ничего этого у новых языков нет. Вот тот же Питон, Руби или Пых потрепыхались, но так на корпоратив и не вышли, потому что нет у них ничего подобного мавену-шмавену, жире, дженкинсу и т.д. и т.п. И не будет никогда. Ну и каркасы, конечно же.
| |
|
1.155, Аноним (-), 12:09, 20/03/2017 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
> ... обеспечивающего автоматическое управление памятью и предоставляющего средства для высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime.
> ... В пакетном менеджере Cargo ...
> ... В будущем файлы ".rmeta" планируется задействовать в сборочном сервере Rust Language Server и возможно в некоторых других утилитах;
Не понял. Какое отношение имеет "пакетный менеджер" к ЯП (да ещё и без "runtime", что тоже херня какая-то --- собственная терминология?)?
| |
1.162, Kodir (ok), 12:57, 20/03/2017 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Что прикольно, сто лет как существует D - такой же "с менеджером памяти" и не менее подходящий для "системное программирование". ГДЕ ВЫ, хипстеры и гонщики за новомодным? Вот же, стабильный язык с кучей библиотек - пишите! Или вам нехватает в ушах рекламы?
| |
|
2.173, Аноним (-), 14:44, 20/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
Ну видимо разница есть, раз не слетаются на такой крутой, "столетний" язык
| |
2.192, Аноним (-), 16:59, 20/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
D растерял кучу людей, когда показал свою несостоятельность как языка в процессе своего развития (история с двумя стандартными библиотеками это вообще нечто, нужно придумать что-нибудь покруче для того чтобы отбить желание его учить еще в начале). Ни одному "хипстеру и гонщику за новомодным" (да и вообще кому угодно) такие запары с маргинальным языком в самом начале пути не нужны и нужны никогда не были.
| |
2.205, Ordu (ok), 23:19, 20/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
> Что прикольно, сто лет как существует D - такой же "с менеджером
> памяти" и не менее подходящий для "системное программирование". ГДЕ ВЫ, хипстеры
> и гонщики за новомодным? Вот же, стабильный язык с кучей библиотек
> - пишите! Или вам нехватает в ушах рекламы?
D пролетел с названием. Такое амбициозное название, а под обложкой жаба, компилируемая в натив-код. Разрабы просто наcpали в душу. Им поскромнее бы быть, может чего и вышло бы.
| |
|
3.214, anonymous (??), 06:26, 22/03/2017 [^] [^^] [^^^] [ответить]
| +/– |
> D пролетел с названием. Такое амбициозное название, а под обложкой жаба, компилируемая
> в натив-код. Разрабы просто наcpали в душу. Им поскромнее бы быть,
> может чего и вышло бы.
D пролетел из-за отсутствия ответа на вопрос "зачем?". Александреску в полный рост.
| |
|
|
|