Автор Тема: Rust атакует.  (Прочитано 30614 раз)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Rust атакует.
« Ответ #15 : Апрель 04, 2013, 07:56:28 am »
Так-то в принципе весьма неплохо, но всё же эти {} и ваще синтаксический мусор...
Но по сравнению с тем, что тут выше на с++ boost variant было показано -- просто прелесть...
Посмотрел код - это полная жесть! Для того, чтобы понять что экспортирует этот модуль, нужно прочесть ВСЮ реализацию!

PS. А у тебя придирки на уровне синтаксиса - это не серьезно.
Y = λf.(λx.f (x x)) (λx.f (x x))

DddIzer

  • Гость
Re: Rust атакует.
« Ответ #16 : Апрель 04, 2013, 09:31:34 am »
Но во всех этих новомодных языках есть одна единая беда - там те же проблемы с модульностью, что и в Обероне - эта модульность не для людей.

В Расте ещё и синтаксис отстойный -- все эти фигурные скобочки бесят уже...
такой же уродливо- невзрачный , как и в СИ с плюсами.. но привыкнуть можно... если деньги платить будут.. :) где -то за пару недель.. по субьективным ощущениям...

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Rust атакует.
« Ответ #17 : Апрель 04, 2013, 09:38:51 am »
Ну а Maybe тут сделать можно, но зачем Maybe без монад? Без монад оно не юзабельно же.
Maybe даже без монад полезен -- для предотвращения ошибок с null-pointer'ами
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Rust атакует.
« Ответ #18 : Апрель 04, 2013, 09:40:20 am »
Так-то в принципе весьма неплохо, но всё же эти {} и ваще синтаксический мусор...
Но по сравнению с тем, что тут выше на с++ boost variant было показано -- просто прелесть...
Посмотрел код - это полная жесть! Для того, чтобы понять что экспортирует этот модуль, нужно прочесть ВСЮ реализацию!

PS. А у тебя придирки на уровне синтаксиса - это не серьезно.
Ну, я, видимо, привык к этому после всяких сишарпов да хаскеллей (да-да, многие хаскеллеры не утруждают себя составлением списка экспорта и экспортирую прямо всё что есть в модуле)...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Rust атакует.
« Ответ #19 : Апрель 04, 2013, 09:42:53 am »
Но во всех этих новомодных языках есть одна единая беда - там те же проблемы с модульностью, что и в Обероне - эта модульность не для людей.

В Расте ещё и синтаксис отстойный -- все эти фигурные скобочки бесят уже...
такой же уродливо- невзрачный , как и в СИ с плюсами.. но привыкнуть можно... если деньги платить будут.. :) где -то за пару недель.. по субьективным ощущениям...
Да даже если и не будут, один фиг можно :-) Синтаксис как синтаксис. Мало отличается от той же Ады и прочих Xаскелей.
Y = λf.(λx.f (x x)) (λx.f (x x))

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Rust атакует.
« Ответ #20 : Апрель 04, 2013, 09:44:17 am »
и синтаксис отстойный -- все эти фигурные скобочки бесят уже...
такой же уродливо- невзрачный , как и в СИ с плюсами.. но привыкнуть можно... если деньги платить будут.. :) где -то за пару недель.. по субьективным ощущениям...
Привыкнуть можно даже к лисповскому синтаксису, но если уж делают язык с современной семантикой, могли бы уж и современный синтаксис прикрутить...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Rust атакует.
« Ответ #21 : Апрель 04, 2013, 09:47:17 am »
Ну а Maybe тут сделать можно, но зачем Maybe без монад? Без монад оно не юзабельно же.
Maybe даже без монад полезен -- для предотвращения ошибок с null-pointer'ами
И как его потом разруливать? Через case?
Не, в таком виде Maybe я в плюсах конечно видел. Тоже мне, проблема. Ну, см. тот же boost::option например. Да и на варианте это делается с полпинка. Но это ж не удобно, так вот без монад юзать Maybe. Это ж после каждой функции нужно втыкать ветвление (через case) для обоих вариантов развития событий. Код превращается в черт знает что.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Rust атакует.
« Ответ #22 : Апрель 04, 2013, 09:48:26 am »
и синтаксис отстойный -- все эти фигурные скобочки бесят уже...
такой же уродливо- невзрачный , как и в СИ с плюсами.. но привыкнуть можно... если деньги платить будут.. :) где -то за пару недель.. по субьективным ощущениям...
Привыкнуть можно даже к лисповскому синтаксису, но если уж делают язык с современной семантикой, могли бы уж и современный синтаксис прикрутить...
А что такое современный синтаксис? Питон не предлагать - жестко прибитые гвоздями отступы нинужны.

И я правильно понимаю, что тебя волнуют и беспокоят только фигурные скобочки? :-)
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Rust атакует.
« Ответ #23 : Апрель 04, 2013, 09:49:14 am »
Да, а у лиспа нет синтаксиса :-) В этом его проблема и в этом его сила.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Rust атакует.
« Ответ #24 : Апрель 04, 2013, 09:54:25 am »
Так-то в принципе весьма неплохо, но всё же эти {} и ваще синтаксический мусор...
Но по сравнению с тем, что тут выше на с++ boost variant было показано -- просто прелесть...
Посмотрел код - это полная жесть! Для того, чтобы понять что экспортирует этот модуль, нужно прочесть ВСЮ реализацию!

PS. А у тебя придирки на уровне синтаксиса - это не серьезно.
Ну, я, видимо, привык к этому после всяких сишарпов да хаскеллей (да-да, многие хаскеллеры не утруждают себя составлением списка экспорта и экспортирую прямо всё что есть в модуле)...
Дык говно же получается. Вот беру я новую стороннюю либу (или свою которую писал когда-то раньше) и хз как её использовать - модуль есть, а спеки на него нет. В качестве костыля можно конечно использовать сгенереную доку в браузереи автокомплит в IDE - но это кривые и не удобные костыли.

Когда я пользую некий модуль, то мне удобно слева открыть свой пишущийся код, а справа, в этом же текстовом редакторе каким бы он ни был, открыть спеку на модуль (спеку нормально руками писанную, с комментами). Ну и вообще знакомиться с чужой либой по её модульным спекам (предварительно прочтя высокоуровневую доку в браузере) много приятнее и быстрее чем прыгая из кода в браузер и обратно, или прыгая по автокомплитам. Это получается быстрее просто потому, что меньше переключений контекстов. Работаешь в однородной среде, причем можешь видеть описалово сразу нескольких связанных сущностей.
Y = λf.(λx.f (x x)) (λx.f (x x))

DddIzer

  • Гость
Re: Rust атакует.
« Ответ #25 : Апрель 04, 2013, 09:55:31 am »
Но во всех этих новомодных языках есть одна единая беда - там те же проблемы с модульностью, что и в Обероне - эта модульность не для людей.

В Расте ещё и синтаксис отстойный -- все эти фигурные скобочки бесят уже...
такой же уродливо- невзрачный , как и в СИ с плюсами.. но привыкнуть можно... если деньги платить будут.. :) где -то за пару недель.. по субьективным ощущениям...
Да даже если и не будут, один фиг можно :-) Синтаксис как синтаксис. Мало отличается от той же Ады и прочих Xаскелей.
ммм. скажем так... предположим , что стоит задача отображения некоторого алгоритма в ЯВУ... по субьективным оценке степень концентрации, которую ДОЛЖЕН иметь программер для раста не намного меньше чем требуемая для с++ (если вообще меньше).. но больше чем для  Go.  Поэтому, напрягаться не имея сурьезных оснований ,имхо, не резон.. Наверное по этому я так и не могу заставить себя написать что либо на Хацкеле... ибо через 5 -10 минут возникает вопрос..- нафига козе боян..?

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Rust атакует.
« Ответ #26 : Апрель 04, 2013, 10:25:20 am »
Между прочим, по моим наблюдениям я (возможно кто-то иначе) лучше всего разбираюсь в не известном стороннем коде на двух языках - на Аде и на Модуле-3 (это из опыта). Затем идет, скажем так, обычный хорошо оформелнный C++.

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

А на другом полюсе, то есть хуже всего, не приятней всего мне разбираться с кодом stl, boost, Oberon/CP (справедливости ради я беру сейчас только языки-потомки Алгола, то есть из общей группы, имеющие общего предка).

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

На дне у нас языки и либы в которых реализация и спецификация круто перемешаны в одном файле. Где-то в придонных водах болтаются также C#, Java, D, Go. Первые два на дно не попали просто потому, что их как-то вытягивает крутые IDE. D же "спасает" то, что либ там мало, они пишутся довольно таки высококласными программистами с любовью (а не тупо потому что бабла отвалили), ну и сам язык побогаче той же жабы. Go - "спасает" вменяемая IDE, вменяемые доки, тулзы и опять таки отсутствие тонн говнокода.

Но никакая IDE не дает такого понимания кода какое наличие вменяемой модульности в языках. Такой модульности как в Модуле-3 и Аде.

Я через несколько часов знакомства с Модулой-3 начал нормально ориентироваться в либах и нашел то, что мне было нужно. Причем нашел и запомнил, оно в моск въелось в так, что я до сих пор помню что там и как в плане использования. А чтобы начать ориентироваться в исходниках оберона мне пришлось прочитать книжку Вирта (ну да, эта такая hand made спека по стандартным модулям и либам). Просто взять и начать разбираться в сторонней либе Обероновской очень не просто (если она не тривиальна).
Y = λf.(λx.f (x x)) (λx.f (x x))

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Rust атакует.
« Ответ #27 : Апрель 04, 2013, 10:35:16 am »
А что такое современный синтаксис? Питон не предлагать - жестко прибитые гвоздями отступы нинужны.
Ну а вот мне нужны -- заставляют всех программистов на этом языке писать более-менее единообразный аккуратный код. Хотя в таком синтаксисе не всё нормально выравнивается, так что есть ещё куда ужесточать правила синтаксического оформления...

И я правильно понимаю, что тебя волнуют и беспокоят только фигурные скобочки? :-)
В основном да, остальное более-менее приемлемо.
Ну, конечно же, ещё нужно нормальное оформление секций экспорта -- не так, как хедеры в сях или недоэкспорт в хаскелле, а наподобии модулы-2 и ады...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Rust атакует.
« Ответ #28 : Апрель 04, 2013, 10:43:51 am »
Maybe даже без монад полезен -- для предотвращения ошибок с null-pointer'ами
И как его потом разруливать? Через case?
Не, в таком виде Maybe я в плюсах конечно видел. Тоже мне, проблема. Ну, см. тот же boost::option например. Да и на варианте это делается с полпинка. Но это ж не удобно, так вот без монад юзать Maybe. Это ж после каждой функции нужно втыкать ветвление (через case) для обоих вариантов развития событий. Код превращается в черт знает что.
В большинстве случаев такое разветвление всё равно необходимо -- хотя бы для того что бы залогировать ошибки. Пропускать это всё конвейером через монаду maybe не всегда возможно.

Вот именно что в с++/с# нет нормального паттерн-матчинга и попытка матчинга через лес if-ов даёт неприемлемый по внешнему виду код, который к тому же не даёт самой главной фишки АлгТД -- инкапсуляции данных, содержащихся внутри разных вариантов (конструкторов АлгТД).
Возникает необходимость объявлять глобальные переменные, не имеющие смысла в обработчиках других вариантов, но тем не менее доступных в них.
Таким путём не справиться с проблемой нулевых указателей и т. п., что очень хорошо решается с помощью настоящих АлгТД...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Rust атакует.
« Ответ #29 : Апрель 04, 2013, 10:53:11 am »
Но никакая IDE не дает такого понимания кода какое наличие вменяемой модульности в языках. Такой модульности как в Модуле-3 и Аде.

Я через несколько часов знакомства с Модулой-3 начал нормально ориентироваться в либах и нашел то, что мне было нужно. Причем нашел и запомнил, оно в моск въелось в так, что я до сих пор помню что там и как в плане использования. А чтобы начать ориентироваться в исходниках оберона мне пришлось прочитать книжку Вирта (ну да, эта такая hand made спека по стандартным модулям и либам). Просто взять и начать разбираться в сторонней либе Обероновской очень не просто (если она не тривиальна).
Модулу-3 я не знаю, как я понял, она несильно отличается в плане definition module от Модулы-2, так что в целом согласен...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…