Re[2]: Феномен lisp-а и rust-а
От: varenikAA  
Дата: 16.06.21 01:16
Оценка:
Здравствуйте, Artem Korneev, Вы писали:

AK>Здравствуйте, varenikAA, Вы писали:


AA>> Почему rust? [..]

AA>> создает чистый код на этих ЯП.

AK>И где бы посмотреть на примеры хорошего чистого кода на Rust?..


https://doc.rust-lang.org/book/ch02-00-guessing-game-tutorial.html
а в вашем понимании что означает чистый?
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[3]: Феномен lisp-а и rust-а
От: Artem Korneev США https://www.linkedin.com/in/artemkorneev/
Дата: 16.06.21 02:48
Оценка: 1 (1) +3
Здравствуйте, varenikAA, Вы писали:

AA>>> создает чистый код на этих ЯП.

AA>https://doc.rust-lang.org/book/ch02-00-guessing-game-tutorial.html

Учебные фрагменты на 10..20 строк это несерьёзно.
В продакшн-коде у вас не будет этих "expect()", там придётся ставить реальную обработку ошибок и/или преобразования из одних типов ошибок в другие. А ветвления кода будут вызывать не println!(), а реальные методы, со своими аргументами и своими результатами выполнения и кодами ошибок. И код очень быстро станет куда менее красивым.

AA>а в вашем понимании что означает чистый?


Слово "чистый" упомянули вы, я хотел посмотреть на то, что представляет из себя чистый код на Rust с вашей точки зрения.
Сам я второй год работаю с Rust и у меня немало времени уходит как раз на то, чтоб сделать код "чище". В моём понимании это легко читаемый код с минимумом ненужных деталей. Rust как раз заставляет выставлять наружу очень уж много тех самых деталей, загромождая код. Бороться с этим трудно.

Из недавних попыток — я воспользовался макросами. Получилось неплохо, основной код бизнес-логики значительно упростился. Но при этом синтаксис самих макросов в Rust'е тоже не то чтоб легко читаемый.
С уважением, Artem Korneev.
Re[4]: Феномен lisp-а и rust-а
От: varenikAA  
Дата: 16.06.21 03:02
Оценка:
Здравствуйте, Artem Korneev, Вы писали:

тех самых деталей, загромождая код. Бороться с этим трудно.
что ж, возможно. этой мой взгляд со стороны. сам я дальше учебного примера не заходил. чистый код в моем понимании это http://blog.cleancoder.com/

AK>Из недавних попыток — я воспользовался макросами. Получилось неплохо, основной код бизнес-логики значительно упростился. Но при этом синтаксис самих макросов в Rust'е тоже не то чтоб легко читаемый.

По сравнению с другими ЯП с макросами или по сравнению с обычным кодом? макросы это же расширение компилятора, вряд ли они могут бы простыми.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[5]: Феномен lisp-а и rust-а
От: Artem Korneev США https://www.linkedin.com/in/artemkorneev/
Дата: 16.06.21 21:16
Оценка: 1 (1)
Здравствуйте, varenikAA, Вы писали:

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


Ясно. Я думал, примеры есть.
На C++/C#/Java я могу писать легко читаемый код. Обычно разделяю для этого код на разные уровни, чтоб в бизнес-логике не было низкоуровневых деталей, чтоб бизнес-логика отражала предметную область как можно лучше. С Rust'ом мне пока сложно в этом плане.

Из того, что мне видится примерами хорошего кода на Rust, могу упомянуть опенсорсные проекты типа этого:

https://github.com/SergioBenitez/Rocket/

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

AA>По сравнению с другими ЯП с макросами или по сравнению с обычным кодом? макросы это же расширение компилятора, вряд ли они могут бы простыми.


По сравнению с обычным кодом.
С уважением, Artem Korneev.
Re: Феномен lisp-а и rust-а
От: Cyberax Марс  
Дата: 17.06.21 05:59
Оценка:
Здравствуйте, varenikAA, Вы писали:

AA>Почему lisp? потому что это первый(только подумайте) ЯП со сборщиком мусора. Только одно это убрало огромное кол-во сложности.

Занудствую: первым языком с GC был Algol-68.
Sapienti sat!
Re[2]: Феномен lisp-а и rust-а
От: varenikAA  
Дата: 17.06.21 06:42
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Здравствуйте, varenikAA, Вы писали:


AA>>Почему lisp? потому что это первый(только подумайте) ЯП со сборщиком мусора. Только одно это убрало огромное кол-во сложности.

C>Занудствую: первым языком с GC был Algol-68.

а я думал, что лисп в 58 родился?

в тему топика:

http://dtrace.org/blogs/bmc/2018/09/18/falling-in-love-with-rust/

https://coderlessons.com/articles/veb-razrabotka-articles/liubovnoe-pismo-k-clojure-chast-1
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[4]: Феномен lisp-а и rust-а
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 24.08.21 00:18
Оценка:
ЭФ> как называется та технология, которая реализует вызовы из lisp в rust и обратно ?

Foreign Function Interface.

Кстати, как идут дела?
rust ffi
Re[3]: Феномен lisp-а и rust-а
От: Doom100500 Израиль  
Дата: 25.08.21 05:41
Оценка: :)
Здравствуйте, varenikAA, Вы писали:

AA>https://www.tiobe.com/tiobe-index/


AA>rust уже скоро в первую лигу перейдет


Ух ты!!! Уже FoxPro на целых cемь пунктов обогнал. Вещь
Спасибо за внимание
Отредактировано 25.08.2021 5:44 Doom100500 . Предыдущая версия .
Re[3]: Феномен lisp-а и rust-а
От: B0FEE664  
Дата: 25.08.21 15:30
Оценка:
Здравствуйте, varenikAA, Вы писали:

AA>https://doc.rust-lang.org/book/ch02-00-guessing-game-tutorial.html


А чем этот код отличается от C++?
И каждый день — без права на ошибку...
Re: Феномен lisp-а и rust-а
От: B0FEE664  
Дата: 25.08.21 15:46
Оценка:
Здравствуйте, varenikAA, Вы писали:

AA>Что является высшим приоритетом в программировании?

Отсутствие ошибок.

AA>На мой взгляд важнейшим являются простота ЯП и возможность посредством ЯП сохранять код

AA>максимально простым и однозначным.

Ну нет. Простой и однозначный код ведёт к нехватке ресурсов.

AA>И здесь я вижу пока лишь два кандидата.

AA>Почему lisp? потому что это первый(только подумайте) ЯП со сборщиком мусора. Только одно это убрало огромное кол-во сложности.
Разве это не убило lisp?

AA>Почему rust? Утверждают что компилятор раста не позволяет выполнить неправильные операции с памятью. нереально круто.

Это как? Что будет, если памяти не хватит для поступивших данных?
И каждый день — без права на ошибку...
Re[2]: Феномен lisp-а и rust-а
От: T4r4sB Россия  
Дата: 25.08.21 19:02
Оценка:
Здравствуйте, B0FEE664, Вы писали:

AA>>Почему rust? Утверждают что компилятор раста не позволяет выполнить неправильные операции с памятью. нереально круто.

BFE>Это как? Что будет, если памяти не хватит для поступивших данных?

Паника будет.
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Re[4]: Феномен lisp-а и rust-а
От: vaa  
Дата: 26.08.21 01:34
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>А чем этот код отличается от C++?

В первую очередь отсутствием операторов, отcутствием void
ну т.е. большей функциональностью. компоуз и т.п.
явное приведение типов. много чего. простой и понятный карго.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[2]: Феномен lisp-а и rust-а
От: vaa  
Дата: 26.08.21 01:39
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Отсутствие ошибок.

Знаете способ как доказать что в коде нет ошибок?
Главное это полезность. Куча софта который страшно глючил по началу, но что называется "выстрелил". тот же firefox.
Он до сих падает, но он банально удобен.

BFE>Ну нет. Простой и однозначный код ведёт к нехватке ресурсов.

Это как?

BFE>Разве это не убило lisp?

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

BFE>Это как? Что будет, если памяти не хватит для поступивших данных?

Не практикую, но думаю у раста случится паника
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[2]: Феномен lisp-а и rust-а
От: vaa  
Дата: 26.08.21 02:33
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Разве это не убило lisp?

  работает. неплохо
(ql:quickload "dexador")
(ql:quickload "plump")
(ql:quickload "lquery")

(defvar *url* "https://apod.nasa.gov/apod/astropix.html")

(defvar *request* (dex:get *url*))

(defvar *parsed-content* (lquery:$ (initialize *request*)))

(defparameter +images+ (lquery:$ *parsed-content* "img" (attr "src")))

(defparameter +links+ (lquery:$ *parsed-content* "a" (attr "href")))

(defparameter +first-image+ (aref +images+ 0))

(defun get-links (arr)
  (loop for e from 0 to (- (array-total-size +links+) 1)
    collect (aref +links+ e)))

(defun is-bit (string)
  (or (null string)
      (eq 'bit (type-of string))))

(defun not-jpeg (s)
  (not (search ".jpg" s)))

(defun not-https (s) (search "https://" s))

(defparameter +cls+
  (remove-if 'not-https
  (remove-if 'not-jpeg
   (remove-if 'is-bit (get-links +links+)))))

(defparameter +segment+ (first +cls+))
(defparameter +filename+
  (subseq +segment+ (+ 1 (search "/" +segment+ :from-end t))))
  

(let ((bytes (dex:get (format nil "https://apod.nasa.gov/apod/~A" +segment+))))
  (with-open-file (out  (merge-pathnames "./nasa/" +filename+)
                       :direction :output
                       :if-exists :supersede
                       :if-does-not-exist :create
                       :element-type 'unsigned-byte)
    (write-sequence bytes out)))

(sb-ext:exit)


я уже не говорю про диалекты типа clojure, scheme, racket, janet-lang irone-scheme.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[3]: Феномен lisp-а и rust-а
От: B0FEE664  
Дата: 26.08.21 08:26
Оценка:
Здравствуйте, vaa, Вы писали:

BFE>>Отсутствие ошибок.

vaa>Знаете способ как доказать что в коде нет ошибок?
нет, такого способа вообще не существует.

vaa>Главное это полезность. Куча софта который страшно глючил по началу, но что называется "выстрелил". тот же firefox.

vaa>Он до сих падает, но он банально удобен.
Всё, что связано с web-ом вообще никогда нормально не работало. Я не знаю ни одной нормально работающей программы связанной с web-ом. Всё программирование в этой области — бардак и содомия. А уж говорить, что это главное... Извините, не согласен.

BFE>>Ну нет. Простой и однозначный код ведёт к нехватке ресурсов.

vaa>Это как?
Обычно расходуется либо слишком много памяти, либо слишком много энергии.

BFE>>Разве это не убило lisp?

vaa>Лисп сейчас очень активно развивается, достаточно окунуться в его среду, чтобы это понять.
В академической среде?

vaa>а аналогов сигнального протокола я до сих пор не встречал.

Если я правильно понял, то в некоторых библиотеках С++ используется похожая технология.

BFE>>Это как? Что будет, если памяти не хватит для поступивших данных?

vaa>Не практикую, но думаю у раста случится паника
паника — это правильная операция с памятью?
И каждый день — без права на ошибку...
Re[5]: Феномен lisp-а и rust-а
От: B0FEE664  
Дата: 26.08.21 08:29
Оценка:
Здравствуйте, vaa, Вы писали:

BFE>>А чем этот код отличается от C++?

vaa>В первую очередь отсутствием операторов, отcутствием void
vaa>ну т.е. большей функциональностью. компоуз и т.п.
vaa>явное приведение типов. много чего. простой и понятный карго.

Но ведь это зависит исключительно от стиля написания кода. Если хочешь писать на С++ как на Rust, то что мешает?
И каждый день — без права на ошибку...
Re[6]: Феномен lisp-а и rust-а
От: vaa  
Дата: 26.08.21 08:46
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE> Если хочешь писать на С++ как на Rust, то что мешает?


С++ однако
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[4]: Феномен lisp-а и rust-а
От: vaa  
Дата: 26.08.21 08:51
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>В академической среде?

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

BFE>паника — это правильная операция с памятью?

ну это не проблема раста, это от программиста зависит кончится память или нет.
плюсы что сделают?
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[7]: Феномен lisp-а и rust-а
От: B0FEE664  
Дата: 26.08.21 10:29
Оценка:
Здравствуйте, vaa, Вы писали:

BFE>> Если хочешь писать на С++ как на Rust, то что мешает?

vaa>С++ однако

Нет, не мешает. На С++ можно писать в функциональном стиле, если есть желание.
И каждый день — без права на ошибку...
Re[6]: Феномен lisp-а и rust-а
От: alex_public  
Дата: 26.08.21 14:06
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE> Но ведь это зависит исключительно от стиля написания кода. Если хочешь писать на С++ как на Rust, то что мешает?


Ничего не мешает. Более того, тот стиль, что навязывает компилятор Rust, является в точности тем же стилем, что считается правилами хорошего тона в современном C++. Т.е. вся разница между этими двумя языками в том, что в C++ ты так пишешь на самодисциплине, а в Rust компилятор тебе по другому просто не даёт (ну точнее и в Rust можно написать код в худших традициях C, типа void* и т.п., но для этого придётся использовать unsafe блок).
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.