Size: a a a

2021 April 27

С

Сергей in rust_offtopic
ful != full, это разные вещи. Посмотри на lawful или truthful, careful - скорее просто образуется прилагательное, без дополнительного смысла полноты
источник

TK

Traveller Kolsky in rust_offtopic
Давай поспорим насчёт того, какой из подходов в общем случае лучше, декларативный или процедурный, а потом посмотрим, какой язык какой подход поощряет
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
декларативный.

Поощряют одинаково
источник

TK

Traveller Kolsky in rust_offtopic
Впервые слышу, возможно, недавно появились
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
недавно
источник

DS

Doge Shibu in rust_offtopic
Они равнозначны. Однозначно хуже только отсутствие ссылочной прозрачности.
источник

DS

Doge Shibu in rust_offtopic
А с этим плохо и в фарше и в шарпе
источник

KR

Kai Ren in rust_offtopic
Ну, не согласен. Как раз со смыслом не “полноты”, но “присутсвия”. Да и забей, я не спорю, так ковыряюсь в буквах просто)
источник

TK

Traveller Kolsky in rust_offtopic
Функциональщина поощряет использование функций первого класса как значений, их чистоту, неизменяемость - ровно противоположно нагруженными состояниями ооп классами с инкапсуляцией и побочными эффектами.
источник

DS

Doge Shibu in rust_offtopic
Тебе ничто не мешает иметь ООП с ссылочной прозрачностью
источник

DS

Doge Shibu in rust_offtopic
ООП и ФП друг другу не противоречат
источник

TK

Traveller Kolsky in rust_offtopic
Но речь о том, какой язык чему поощряет
источник

TK

Traveller Kolsky in rust_offtopic
И ооп можно в обоих языках делать
источник

DS

Doge Shibu in rust_offtopic
Оба плохо поощаряют ссылочную прозрачность, потому что не имеют в системе типов инструментов, которые позволяют эргономично использовать ссылочно прозрачный стиль в коде
источник

DS

Doge Shibu in rust_offtopic
Чтобы писать в ссылочно прозрачном стиле и не страдать - нужен набор инструментов, которых нет ни в F#, ни в C#.

Потому что они оба находятся в рамках дико ограниченной системы типов CLR
источник

IL

Ilya Lakhin in rust_offtopic
Ну как "хреновых". Они часто размытые очень. Хотя формально лицензия вроде как неотзывная, на самом деле в таких формулировках на практике судья может решить аннулировать лицензию, вернув автору копирайт.

> The “source code” for a work means the preferred form of the work for making modifications to it.
> A “covered work” means either the unmodified Program or a work based on the Program.
> A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language.

Очень обтекаемо. Кому именно "preferred"? Где заканчиваются границы covered? Где заканчиваются границы Standard Interface?

Например, кто-то написал код на C++ под GPL, я его взял, взял код CPP-TO-PYTHON транслятора, поместил их вместе в одну работу. Это производная работа? Да, значит она тоже должна быть под GPL. Ок, она под GPL. Я беру эту новую программу, запускаю её. Она в качестве результата выдаёт мне Python код, который просто является трансляцией исходного C++ кода.

Является ли эта трансляция "source code"? В бытовом смысле нет. В юридическом смысле неопределено(лицензия этого толком не объясняет тоже).

Является ли она "covered work", то есть работой, основанной на исходной программе, или это просто случай использования программы, как её "Standard Interface"? В последнем случае полученная работа не попадает под GPL по тексту самой лицензии.
источник

TK

Traveller Kolsky in rust_offtopic
Есть контроль на уровне типов. Он самый строгий, особенно если соблюдается и для сигнатур. Но вопрос не в том стоит. Вопрос в том, что сеттер может изменить левое поле, о котором никто и не подозревал, и это общепринятая практика, а пачкание функций общепринятой практикой не является.
источник

ID

Iv@n Dereviankin in rust_offtopic
вроде как в компиляторе гцц написано, что скомпилированніе им программі — продукт использование и не подлежат гпл
источник

DS

Doge Shibu in rust_offtopic
Смотри, чтобы писать в ссылочно прозрачном стиле - тебе нужен хорошо работающий IO тип.

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

TK

Traveller Kolsky in rust_offtopic
Другими словами, если ты можешь сделать static mut и изменять его с гонкой данных, это ещё не значит, что ты должен, или что так советуют делать, или что это не будет видно в коде
источник