Re[15]: Тенденции языков
От: DarkEld3r  
Дата: 19.05.15 09:55
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>Деление на ноль или какая-нибудь хрень в unsafe завернутая — возможны где угодно же.

Теоретически. Практически есть достаточно функций откуда паники можно не ждать. Опять же, в расте точно такая же "проблема" с деструкторами как в С++ — если выброшена паника при обработке паники — будет сразу terminate.
Re[17]: Тенденции языков
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.05.15 14:15
Оценка:
Здравствуйте, DarkEld3r, Вы писали:

DE>Опять же, авторы ссылаются и на другие языки.


На какие?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: Тенденции языков
От: DarkEld3r  
Дата: 19.05.15 15:29
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>На какие?

Как они сами говорят:

Rust is not a particularly original language, with design elements coming from a wide range of sources. Some of these are listed below (including elements that have since been removed):

SML, OCaml: algebraic datatypes, pattern matching, type inference, semicolon statement separation
C++: references, RAII, smart pointers, move semantics, monomorphisation, memory model
ML Kit, Cyclone: region based memory management
Haskell (GHC): typeclasses, type families
Newsqueak, Alef, Limbo: channels, concurrency
Erlang: message passing, task failure, linked task failure, lightweight concurrency
Swift: optional bindings
Scheme: hygienic macros
C#: attributes
Ruby: block syntax
NIL, Hermes: typestate
Unicode Annex #31: identifier and pattern syntax

Re[12]: Тенденции языков
От: serb Россия  
Дата: 19.05.15 16:03
Оценка:
VD>Правильно! Нужно долго и нудно протаскивать код возврата через все методы где использована эта функция.

VD>В случае же исключений мы просто обрабатываем исключение прямо в корне GUI-ёвого приложения (ведь, они же прозрачно бегают между клиентом и сервером) и показываем тот самый диалог.


КО подсказывает, что в каком-то месте catch будет пропущен и компилятор это не отловит, и в самый неподходящий момент какой-нибудь сервак отвалится.
Re[19]: Тенденции языков
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.05.15 16:58
Оценка: +1
Здравствуйте, DarkEld3r, Вы писали:

DE>

DE>Rust is not a particularly original language, with design elements coming from a wide range of sources. Some of these are listed below (including elements that have since been removed):
DE> SML, OCaml: algebraic datatypes, pattern matching, type inference, semicolon statement separation
DE> C++: references, RAII, smart pointers, move semantics, monomorphisation, memory model
DE> ML Kit, Cyclone: region based memory management
DE> Haskell (GHC): typeclasses, type families
DE> Newsqueak, Alef, Limbo: channels, concurrency
DE> Erlang: message passing, task failure, linked task failure, lightweight concurrency
DE> Swift: optional bindings
DE> Scheme: hygienic macros
DE> C#: attributes
DE> Ruby: block syntax
DE> NIL, Hermes: typestate
DE> Unicode Annex #31: identifier and pattern syntax


Где здесь хоть слово про коды ошибок?

Зато здесь полно языков поддерживающих исключения. Особо смешно выглядит:

Erlang: message passing, task failure, linked task failure, lightweight concurrency

Ведь в Erlang исключения являются частью их стратегии отказоустойчивости.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: Тенденции языков
От: DarkEld3r  
Дата: 19.05.15 19:03
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Где здесь хоть слово про коды ошибок?

А кто их обещал? Я просто сказал, что разработчики раста смотрели не только на С++.
Re[9]: Тенденции языков
От: Mamut Швеция http://dmitriid.com
Дата: 19.05.15 19:10
Оценка:
DM>Да, если возвращаемое значение тебе не важно, можно примерно так написать, даже короче. Но это вон как надо расстараться, сколько слов написать. Намеренный отказ от разбора ошибки все же не то же самое, что банальная забывчивость.

Ничем не отличается. В итоге все будет обернуто в try! и прочие похожие макросы.

Ну и да. Реально наугад взял https://github.com/rust-lang/rust/blob/master/src/librustc_typeck/collect.rs

Везде ошибка банально возвращается вверх по стеку вызовов (как пример: cycle_check). В итоге где-то на самом верху сидит код и пытается понять, что ему делать с ErrorReported, возращенной с пятнадцатого вложенного уровня Или не пытается.


dmitriid.comGitHubLinkedIn
Re[10]: Тенденции языков
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 20.05.15 04:11
Оценка: +2
Здравствуйте, Mamut, Вы писали:

M>Везде ошибка банально возвращается вверх по стеку вызовов (как пример: cycle_check). В итоге где-то на самом верху сидит код и пытается понять, что ему делать с ErrorReported, возращенной с пятнадцатого вложенного уровня Или не пытается.


Ну а с исключениями там был бы большой catch, который "пытается понять, что ему делать с ErrorReported, возращенной с пятнадцатого вложенного уровня Или не пытается." Те же яйца, но в профиль. Растаманы просто предпочитают явно это все прописать.
Re[11]: Тенденции языков
От: Mamut Швеция http://dmitriid.com
Дата: 20.05.15 04:22
Оценка: +2
M>>Везде ошибка банально возвращается вверх по стеку вызовов (как пример: cycle_check). В итоге где-то на самом верху сидит код и пытается понять, что ему делать с ErrorReported, возращенной с пятнадцатого вложенного уровня Или не пытается.

DM>Ну а с исключениями там был бы большой catch, который "пытается понять, что ему делать с ErrorReported, возращенной с пятнадцатого вложенного уровня Или не пытается." Те же яйца, но в профиль. Растаманы просто предпочитают явно это все прописать.


О чем все тут и говорят А в ответ «нет, это намного лучше», «нет, вы ничего не понимаете, тут явно!» и т.п.


dmitriid.comGitHubLinkedIn
Re[21]: Тенденции языков
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.05.15 09:11
Оценка:
Здравствуйте, DarkEld3r, Вы писали:

VD>>Где здесь хоть слово про коды ошибок?

DE>А кто их обещал? Я просто сказал, что разработчики раста смотрели не только на С++.

Ты говорил, что они куда-то там смотрели. В списке большинство языков поддерживают исключения. Так где они высмотрели языки без исключений?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Тенденции языков
От: hi_octane Беларусь  
Дата: 20.05.15 09:17
Оценка: +1
S>КО подсказывает, что в каком-то месте catch будет пропущен и компилятор это не отловит, и в самый неподходящий момент какой-нибудь сервак отвалится.
Все стандартные логгеры автоматом ставят последний глобальный перехватчик чтобы исключение в стопочку положить и умеют дамп записать. Так что если даже и отвалится — оно в итоге для здоровья всё
Re[22]: Тенденции языков
От: DarkEld3r  
Дата: 20.05.15 09:40
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Ты говорил, что они куда-то там смотрели. В списке большинство языков поддерживают исключения. Так где они высмотрели языки без исключений?

Давай сначала: ты обвинил их в "ограниченности кругозора", мол ничего слаще С++ не видели потому и боятся исключений. Вот конкретно это и оспаривал — разработчики раста знакомы и с другими языками (если, конечно, мы им верим).

А так-то я сам за исключения, о чём сразу и сказал.
Re[23]: Тенденции языков
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.05.15 10:08
Оценка:
Здравствуйте, DarkEld3r, Вы писали:

DE>Давай сначала: ты обвинил их в "ограниченности кругозора", мол ничего слаще С++ не видели потому и боятся исключений. Вот конкретно это и оспаривал — разработчики раста знакомы и с другими языками (если, конечно, мы им верим).


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

Личном не очевидно, что люди из мира С++ и с остальными языками они разве что поигрались.

Они молодцы, что провели анализ фич других языков. Но вот результат получился спорным.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[24]: Тенденции языков
От: DarkEld3r  
Дата: 20.05.15 11:28
Оценка: +1 -1
Здравствуйте, VladD2, Вы писали:

VD>Личном не очевидно, что люди из мира С++ и с остальными языками они разве что поигрались.

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

Повторюсь, у меня опыт преимущественно плюсовый. При этом преимущества исключений мне очевидны. Хотя по твоей логике должно быть наоборот.
Re[25]: Тенденции языков
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.05.15 11:44
Оценка:
Здравствуйте, DarkEld3r, Вы писали:

VD>>Личном не очевидно, что люди из мира С++ и с остальными языками они разве что поигрались.

DE>Из чего очевидно? Просто из самого отсутствия исключений?

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

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


Вот в это охотно верю. Микросистема прикручена похожая на схемовскую. И так же без учета опыта того же Немерла и други современных языков, где эту тему развили намного шире.

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


Ну, значит ты более прогрессивный. Среди плюсовиков много народу который использует С++ как улучшенный С или вообще тупо пишет на С. Идеи вроде "явно выражать все намерения" — часто толкают апологеты С-ей, а не плюсов.

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

Если язык будет развивать, то когда-нибудь появятся и исключения. Вопрос только сколько лет на это уйдет. У МС ушло 10 лет на осознание того, что они зря отказывались от полезных вещей. И уйдет еще столько же на реализацию самых вкусных фич.

Эти пойдут тем же путем. Сначала отрицание. Потом тишина. Потом вялое приятие. А, в конце скажут, что они всю жизнь хотели исключений, но их не так поняли.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: Тенденции языков
От: Sinclair Россия https://github.com/evilguest/
Дата: 20.05.15 12:32
Оценка:
Здравствуйте, Mamut, Вы писали:

M>О чем все тут и говорят А в ответ «нет, это намного лучше», «нет, вы ничего не понимаете, тут явно!» и т.п.

Ну ведь правда же намного лучше!
Вон языки с exceptions всякий раз скатываются в трэш, как только выходят за пределы банального стека. Ну там — давайте попробуем распараллелить десять тасков; оп! три из них упали. Что с этим делать? Или хотя бы просто попытаться бросить исключение из блока итераторов — уже целая песня получается.
А тут всё более-менее понятно: агрегация для ошибок работает так же, как и для данных.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[13]: Тенденции языков
От: Mamut Швеция http://dmitriid.com
Дата: 20.05.15 13:48
Оценка:
M>>О чем все тут и говорят А в ответ «нет, это намного лучше», «нет, вы ничего не понимаете, тут явно!» и т.п.
S>Ну ведь правда же намного лучше!
S>Вон языки с exceptions всякий раз скатываются в трэш, как только выходят за пределы банального стека. Ну там — давайте попробуем распараллелить десять тасков; оп! три из них упали. Что с этим делать?

Ты не поверишь Erlang это «проблему» решил еще в начале 90-х. У Раста, как я понимаю, вообще нет никакой возможности узнать, что произошло, если поток завершился аварийно (паника).

S>Или хотя бы просто попытаться бросить исключение из блока итераторов — уже целая песня получается.

S>А тут всё более-менее понятно: агрегация для ошибок работает так же, как и для данных.

Эээ чо?


dmitriid.comGitHubLinkedIn
Re[14]: Тенденции языков
От: DarkEld3r  
Дата: 20.05.15 14:22
Оценка:
Здравствуйте, Mamut, Вы писали:

M>У Раста, как я понимаю, вообще нет никакой возможности узнать, что произошло, если поток завершился аварийно (паника).

Ну стектрейса не будет, а ошибка — вполне.
Re[15]: Тенденции языков
От: Mamut Швеция http://dmitriid.com
Дата: 20.05.15 14:43
Оценка:
M>>У Раста, как я понимаю, вообще нет никакой возможности узнать, что произошло, если поток завершился аварийно (паника).
DE>Ну стектрейса не будет, а ошибка — вполне.

Ну так стектрейс — это самое интересное Хотя в Эрланге тоже не будет стектрейса в этом случае

Я тут, правда, внезапно нашел смешное: https://doc.rust-lang.org/std/thread/fn.catch_panic.html

То есть все разговоры про то, что панику отловить нельзя — сказки для дурачков. Все можно, несмотря на грозное «не используйте»


dmitriid.comGitHubLinkedIn
Re[16]: Тенденции языков
От: DarkEld3r  
Дата: 20.05.15 15:13
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Я тут, правда, внезапно нашел смешное: https://doc.rust-lang.org/std/thread/fn.catch_panic.html


M>То есть все разговоры про то, что панику отловить нельзя — сказки для дурачков. Все можно, несмотря на грозное «не используйте»

Эта функция всё-таки "нестабильная", то есть в стабильных (не найтли) сборках языка её использовать не получится.

В остальном, она не делает ничего сверхинтересного — точно так же в мейне можно было создать новый поток и выполнять все действия в нём, чтобы перехватить панику. Хотя её появление хороший знак — может и придут к нормальным исключением, жаль только try! макрос уже занят.
Кстати, сейчас в расте ещё и тип ошибки вытаскивать не особо удобно.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.