All streams
Search
Write a publication
Pull to refresh
@math_coderread⁠-⁠only

User

Send message

Да, спасибо, на это стоит посмотреть.

Если будете пихать это в свои макросы

Нет, это обсуждение подтолкнуло меня к следующим выводам.


  1. Такой подход к построению библиотеки виджетов и аналогичных систем требует всей мощи "классического" (как в C++/Java/C#) ООП.
  2. Если вам нужно ООП целиком, а не отдельные его паттерны, хорошо выразимые другими средствами (ФП, АП и т. д.), вы что-то делаете неправильно.
  3. Я делаю неправильно, надо искать другие подходы.

Идеи есть, буду пробовать. Если получится, обещаю запилить статью про метод создания библиотеки виджетов без ООП.

Баш — не самая лучшая оболочка.

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

Я как раз пишу сейчас нечто cхожее в этом плане с библиотекой виджетов и думаю попробовать соорудить что-то из макросов. Но это надо ещё думать как провернуть.

Да, это бойлерплейт. Он решается кострукцией а-ля impl Widget for ButtonRuntime through self.widget;. Я думаю есть все шансы, что она появится.

Понятно, что у кнопки свои поля есть. Не вижу как это мешает. https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=5c3b78efb712ccbfa84663ca4dc7c620


Единственно, чего не хватает — это языковой поддержки автоматической имплементации трейта через филд. Я думаю, это появится. Сейчас скорее всего можно выкрутиться макросами, но это надо подумать как сделать.

А зачем делать кнопку структурой? Пусть и кнопка, и виджет будут трейтами. У трейтов наследование есть.

Для Rust такой подход неидеоматичен, если вообще возможен. Здесь другие способы добиваться тех же гарантий.

let mutable my_variable: Option<&mutable dynamic MyVerySpecificTrait> = &mutable some_variable.as_reference().lock().unwrap().as_reference();
и
let mut my_var: Option<&mut dyn MyTrait> = &mut some_var.as_ref().lock().unwrap().as_ref();


Или


function some_function(input: implements Function(implements IntoString) -> Box<dynamic SomeTrait>) -> implements Iter<Item=ReferenceCell<integer_16bit>>
и
fn some_fn(input: impl Function(impl IntoString) -> Box<dyn SomeTrait>) -> impl Iter<Item=RefCell<int16>>


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

шоткат в виде F5 быстрее, чем cp file.a file.b

На самом деле нет. Во-первых, в таком случае не F5, а Shift + F5, во-вторых, file.b всё равно писать (хотя бы, стерев a и дописав b).


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

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

Это называется виктимблейминг.

Вы про то, что можно просто наплевать на GPL? Да, можно. Но ведь Столлман не это имеет в виду.


Хотя я не знаю, имеет ли здесь место нарушение GPL. Так как, насколько мне известно, ключевым является существование версии того же драйвера не для Linux: если есть версия не для Linux, то комплект драйвер+Linux не является деривативом Linux и драйвер не обязан быть GPL, если же драйвер есть только и исключительно под Linux, то он обязан быть GPL.


Возможно также, что достаточно только лишь одной принципиальной возможности существования драйвера не для Linux, чтобы комплект Linux + драйвер не являлся деривативом Linux.


В любом случае, это всё выглядит как способы нарушить дух лицензии, не нарушив при этом её букву. И всегда рискуешь вляпаться. То есть GPL позволяет коммерческое использование, но недружелюбна к нему, в отличие от MIT/Apache.

Да, прямого запрета нет. Но как только вы достаточно сильно завязались на что-то под GPL, весь код вашего продукта придётся открыть также под GPL. В принципе, вам никто не мешает и после этого продавать свой продукт за бешеные деньги, но по факту спроса не будет и цену придётся снизить до нуля или околонуля.

пусть даже мнения оппонента которое претит всему его мировоззрению

Ну это-то ладно, а вот как быть, если оно просто неверное? И при этом высказывается без тени сомнения, и на попытки указать на как минимум шаткость некоторых аспектов, человек категорически не реагирует. Ну, окрытые оскорбления и тут, наверное, излишни, но явно сказать "вы не разбираетесь в вопросе", "вы пишете полную чушь/глупости", или там "прекратите нести чушь", или даже просто "wrong!", я думаю, определённо следует. Да, это негатив, но ведь и заслуживающего уважения мнения в этом случае нет.

Так я не понял, они (эти самые некие программисты) что, пытались считать финансы, используя вычисления с плавающей точкой? Ну, тогда они некомпетентны как программисты, но разве это причина не переходить на Java?

Нет, серьёзно, это разные вещи. Разные цели (свобода vs. эффективность ("базар")), разные создатели, разные движения и связанные с ними организации, разные лицензии, разные области применения (free software нельзя использовать в коммерческом продукте, open source — можно).

Я извиняюсь, но табы и шрифты в консоли — это важно и несиюмитно. Отношение ко всякого рода изнасилованиям в форме дарения цветов меняется, а консоль и табы были, есть и будут.

Information

Rating
Does not participate
Registered
Activity