История изменений
Исправление byko3y, (текущая версия) :
Что? То есть, ты подразумеваешь, что Rust не заставляет тебя запоминать аспекты своего использоваться? Вот как идеи появляются в голове — так сразу их записываешь и они работают, да? Спасибо расту за это.
Не утрируйте, я думаю, вы прекрасно понимаете о чем идет речь
Ну типа если измерять это между питоном, который позволяет забивать на всё по черному, и каким-нибудь хаскелем, который заставляет досконально понимать структуру типов, иначе ты не поймешь ничего в ошибке, которую неизбежно получишь при компиляции — раст находится где-то по середине, вынося мозг, но не сильно, нежно. Однако же, «не запоминать аспекты своего использования» — никак нет, твой код просто не скомпилируется, а если скомпилируется — так упадет с паникой, а не упадет — так будет ползать со скоростью питона из-за неконтролированных копирований.
Еще раз: Rust никак не помогает обнаруживать алгоритмические ошибки. Потому он с радостью скомпилирует проблемный код.
Эх раз еще раз, еще много-много раз. Это пунктик такой, говорить очевидные вещи как аргументы дискуссии? От таких вещей нет спасения
Есть спасение, называется «читаемость кода». Когда алгоритм прост и ясен, то шанс совершить в нем ошибку намного ниже. Кстати, в лекции Александреску ниже есть интересный фрагмент, где он приводит примеры криптоалгоритма деревьев из libstd++:
https://www.youtube.com/watch?v=9zpHdh70Xdk&t=3240s
Казалось бы, все знают красно-черные деревья, а вот хрен там, реализация деревьев в libstd++ — это совсем другой зверь, и ты будешь вычитывать его часами, чтобы понять, как он работает. Я уверен, что на Rust-е можно писать чистый код, где алгоритм будет алгоритмом, а не стенкой вспомогательных объявлений с редкими строчками реальных действий. Эта же претензия есть и к C++, Rust сделал ситуацию только хуже, потому что теперь ко всем вспомогательным объявлениям добавились еще вспомогательные объявления для соблюдения безопасности операций с указателями. Ткни в любую растовую либу либу — большая ее часть будет вспомогательными объявлениями. Ткни в любую либу шаблонов C++ — там тоже большая часть объявлений будет вспомогательными.
чем больше надо прописывать в коде тем лучше, чем чаще компилятор ругается что не может разобраться что имелось в виду без этих пометок, тем лучше. Это лучше еще по причине того, что человек проводящий ревью вашего кода не будет вынужден домысливать что имелось в виду имея на руках подобного рода аннотации. Вообще я считаю что стоит максимально уходить от любых «соглашений», «допущений», «неявного поведения», «списка правил работы» вместо явного аннотирования в коде этой работы. Да может получается многословно и выглядит как мрак, но С++ выглядит не лучше
Я не понимаю, ты что, из языков писал только на крестах и расте? Неужели ты не писал никогда в языках с простыми примитивными структурами данных? Которые могут быть многословны по мере роста сложности программы, но остаются просты? Такой вот матерый каноничный пример — это Кобол, на котором даже бабушки пишут, и не испытывают проблемы с необходимостью что-то там нужно держать в голове, помнить инварианты, придерживаться соглашений.
C++ — плохой и неудобный язык, Rust — плохой и неудобный язык. Но Rust выгоден корпорациям, вот его и форсят. Сиха — плохой и неудобный язык, но при всем при этом он ближе к идеалу, потому что он проще. Завези в Си примитивное RAII, безопасные макросы (они же шаблоны), доработай систему типов, чтобы появились нормальные массивы и ADT, сделай замыкания — и можно выкидывать кресты с растом на помойку. На самом деле, это описание о-о-очень близко к подмножеству C++. И дальше от Rust. Проблема крестов здесь только в том, что в нем присутствует очень много фичей, которые не нужны и которые можно по ошибке или по упоротости задействовать.
А кто тебя изначально заставлял стрелять себе в ногу?
Никто никого не заставляет, а продолжают писать плохо, не хотят, божатся, но продолжают, и дело тут вовсе не в желании или принуждении - инструмент плохой, соблазн большой, репутация «быстрый, мощный, гибкий, для профессионалов» привлекает толпы фанатиков
А я бы посоветовал вспомнить историю рождения C++ — он совсем не с такой репутацией вкатывался на рынок. Он вкатывался как Си с классами. И нифига не мощный, и не гибкий, и не быстрый — и, тем не менее, это привлекало если не толпы фанатиков, то как минимум «толпы» манагеров, создающих спрос на рабочую силу. Это потом, в девяностых, помешательство перешло в терминальную стадию и приобрело знакомую нам форму. Я знакомился с C++ еще до появления C++11, и на тот момент это был неюзабельный треш. Современный же C++ позволяет писать вообще без классов.
Я тоже так думал. Но теперь прихожу к выводу, что раст создан прожженными крестовиками, которые тщательно скопировали недостатки крестов, вроде медленной компиляции и обобщений, устранив лишь самые очевидные всем проблемы.
любой язык низкого уровня похож на С и проблемы у него такие же как и у С, не удивительно что всех их это роднит
Как прожженный сишник, который даже на паскале писал как на Си, для меня вся эта чисто крестово-растовская муть выглядит совершенно дико и не похоже на Си. У Си есть проблемы, но они другие, хоть и в каком-то смысле похуже крестово-растовых.
Исправление byko3y, :
Что? То есть, ты подразумеваешь, что Rust не заставляет тебя запоминать аспекты своего использоваться? Вот как идеи появляются в голове — так сразу их записываешь и они работают, да? Спасибо расту за это.
Не утрируйте, я думаю, вы прекрасно понимаете о чем идет речь
Ну типа если измерять это между питоном, который позволяет забивать на всё по черному, и каким-нибудь хаскелем, который заставляет досконально понимать структуру типов, иначе ты не поймешь ничего в ошибке, которую неизбежно получишь при компиляции — раст находится где-то по середине, вынося мозг, но не сильно, нежно. Однако же, «не запоминать аспекты своего использования» — никак нет, твой код просто не скомпилируется, а если скомпилируется — так упадет с паникой, а не упадет — так будет ползать со скоростью питона из-за неконтролированных копирований.
Еще раз: Rust никак не помогает обнаруживать алгоритмические ошибки. Потому он с радостью скомпилирует проблемный код.
Эх раз еще раз, еще много-много раз. Это пунктик такой, говорить очевидные вещи как аргументы дискуссии? От таких вещей нет спасения
Есть спасение, называется «читаемость кода». Когда алгоритм прост и ясен, то шанс совершить в нем ошибку намного ниже. Кстати, в лекции Александреску ниже есть интересный фрагмент, где он приводит примеры криптоалгоритма деревьев из libstd++:
https://www.youtube.com/watch?v=9zpHdh70Xdk&t=3240s
Казалось бы, все знают красно-черные деревья, а вот хрен там, реализация деревьев в libstd++ — это совсем другой зверь, и ты будешь вычитывать его часами, чтобы понять, как он работает. Я уверен, что на Rust-е можно писать чистый код, где алгоритм будет алгоритмом, а не стенкой вспомогательных объявлений с редкими строчками реальных действий. Эта же претензия есть и к C++, Rust сделал ситуацию только хуже, потому что теперь ко всем вспомогательным объявлениям добавились еще вспомогательные объявления для соблюдения безопасности операций с указателями. Ткни в любую растовую либу либу — большая ее часть будет вспомогательными объявлениями. Ткни в любую либу шаблонов C++ — там тоже большая часть объявлений будет вспомогательными.
чем больше надо прописывать в коде тем лучше, чем чаще компилятор ругается что не может разобраться что имелось в виду без этих пометок, тем лучше. Это лучше еще по причине того, что человек проводящий ревью вашего кода не будет вынужден домысливать что имелось в виду имея на руках подобного рода аннотации. Вообще я считаю что стоит максимально уходить от любых «соглашений», «допущений», «неявного поведения», «списка правил работы» вместо явного аннотирования в коде этой работы. Да может получается многословно и выглядит как мрак, но С++ выглядит не лучше
Я не понимаю, ты что, из языков писал только на крестах и расте? Неужели ты не писал никогда в языках с простыми примитивными структурами данных? Которые могут быть многословны по мере роста сложности программы, но остаются просты? Такой вот матерый каноничный пример — это Кобол, на котором даже бабушки пишут, и не испытывают проблемы с тем, что что-то там нужно держать в голове, помнить инварианты, придерживаться соглашений.
C++ — плохой и неудобный язык, Rust — плохой и неудобный язык. Но Rust выгоден корпорациям, вот его и форсят. Сиха — плохой и неудобный язык, но при всем при этом она ближе к идеалу, потому что она проще. Завези в Си примитивное RAII, безопасные макросы (они же шаблоны), доработай систему типов, чтобы появились нормальные массивы и ADT, сделай замыкания — и можно выкидывать кресты с растом на помойку. На самом деле? это описание о-о-очень близко к подмножеству C++. И дальше от Rust. Проблема крестов здесь только в том, что в нем присутствует очень много фичей, которые не нужны и которые можно по ошибке или по упоротости задействовать.
А кто тебя изначально заставлял стрелять себе в ногу?
Никто никого не заставляет, а продолжают писать плохо, не хотят, божатся, но продолжают, и дело тут вовсе не в желании или принуждении - инструмент плохой, соблазн большой, репутация «быстрый, мощный, гибкий, для профессионалов» привлекает толпы фанатиков
А я бы посоветовал вспомнить историю рождения C++ — он совсем не с такой репутацией вкатывался на рынок. Он вкатывался как Си с классами. И нифига не мощный, и не гибкий, и не быстрый — и, тем не менее, это привлекало если не толпы фанатиков, то как минимум «толпы» манагеров, создающих спрос на рабочую силу. Это потом, в девяностых, помешательство перешло в терминальную стадию и приобрело знакомую нам форму. Я знакомился с C++ еще до появления C++11, и на тот момент это был неюзабельный треш. Современный же C++ позволяет писать вообще без классов.
Я тоже так думал. Но теперь прихожу к выводу, что раст создан прожженными крестовиками, которые тщательно скопировали недостатки крестов, вроде медленной компиляции и обобщений, устранив лишь самые очевидные всем проблемы.
любой язык низкого уровня похож на С и проблемы у него такие же как и у С, не удивительно что всех их это роднит
Как прожженный сишник, который даже на паскале писал как на Си, для меня вся эта чисто крестово-растовская муть выглядит совершенно дико и не похоже на Си. У Си есть проблемы, но они другие, хоть и в каком-то смысле похуже крестово-растовых.
Исходная версия byko3y, :
Что? То есть, ты подразумеваешь, что Rust не заставляет тебя запоминать аспекты своего использоваться? Вот как идеи появляются в голове — так сразу их записываешь и они работают, да? Спасибо расту за это.
Не утрируйте, я думаю, вы прекрасно понимаете о чем идет речь
Ну типа если измерять это между питоном, который позволяет забивать на всё по черному, и каким-нибудь хаскелем, который заставляет досконально понимать структуру типов, иначе ты не поймешь ничего в ошибке, которую неизбежно получишь при компиляции — раст находится где-то по середине, вынося мозг, но не сильно, нежно. Но «не запоминать аспекты своего использования» — никак нет, твой код просто не скомпилируется, не скомпилируется — так упадет с паникой, а не упадет — так будет ползать со скоростью питона из-за неконтролированных копирований.
Еще раз: Rust никак не помогает обнаруживать алгоритмические ошибки. Потому он с радостью скомпилирует проблемный код.
Эх раз еще раз, еще много-много раз. Это пунктик такой, говорить очевидные вещи как аргументы дискуссии? От таких вещей нет спасения
Есть спасение, называется «читаемость кода». Когда алгоритм прост и ясен, то шанс совершить в нем ошибку намного ниже. Кстати, в лекции Александреску ниже есть интересный фрагмент, где он приводит примеры криптоалгоритма деревьев из libstd++:
https://www.youtube.com/watch?v=9zpHdh70Xdk&t=3240s
Казалось бы, все знают красно-черные деревья, а вот хрен там, реализация деревьев в libstd++ — это совсем другой зверь, и ты будешь вычитывать его часами, чтобы понять, как он работает. Я уверен, что на Rust-е можно писать чистый код, где алгоритм будет алгоритмом, а не стенкой вспомогательных объявлений с редкими строчками реальных действий. Эта же претензия есть и к C++, Rust сделал ситуацию только хуже, потому что теперь ко всем вспомогательным объявлениям добавились еще вспомогательные объявления для соблюдения безопасности операций с указателями. Ткни в любую растовую либу либу — большая ее часть будет вспомогательными объявлениями. Ткни в любую либу шаблонов C++ — там тоже большая часть объявлений будет вспомогательными.
чем больше надо прописывать в коде тем лучше, чем чаще компилятор ругается что не может разобраться что имелось в виду без этих пометок, тем лучше. Это лучше еще по причине того, что человек проводящий ревью вашего кода не будет вынужден домысливать что имелось в виду имея на руках подобного рода аннотации. Вообще я считаю что стоит максимально уходить от любых «соглашений», «допущений», «неявного поведения», «списка правил работы» вместо явного аннотирования в коде этой работы. Да может получается многословно и выглядит как мрак, но С++ выглядит не лучше
Я не понимаю, ты что, из языков писал только на крестах и расте? Неужели ты не писал никогда в языках с простыми примитивными структурами данных? Которые могут быть многословны по мере роста сложности программы, но остаются просты? Такой вот матерый каноничный пример — это Кобол, на котором даже бабушки пишут, и не испытывают проблемы с тем, что что-то там нужно держать в голове, помнить инварианты, придерживаться соглашений.
C++ — плохой и неудобный язык, Rust — плохой и неудобный язык. Но Rust выгоден корпорациям, вот его и форсят. Сиха — плохой и неудобный язык, но при всем при этом она ближе к идеалу, потому что она проще. Завези в Си примитивное RAII, безопасные макросы (они же шаблоны), доработай систему типов, чтобы появились нормальные массивы и ADT, сделай замыкания — и можно выкидывать кресты с растом на помойку. На самом деле? это описание о-о-очень близко к подмножеству C++. И дальше от Rust. Проблема крестов здесь только в том, что в нем присутствует очень много фичей, которые не нужны и которые можно по ошибке или по упоротости задействовать.
А кто тебя изначально заставлял стрелять себе в ногу?
Никто никого не заставляет, а продолжают писать плохо, не хотят, божатся, но продолжают, и дело тут вовсе не в желании или принуждении - инструмент плохой, соблазн большой, репутация «быстрый, мощный, гибкий, для профессионалов» привлекает толпы фанатиков
А я бы посоветовал вспомнить историю рождения C++ — он совсем не с такой репутацией вкатывался на рынок. Он вкатывался как Си с классами. И нифига не мощный, и не гибкий, и не быстрый — и, тем не менее, это привлекало если не толпы фанатиков, то как минимум «толпы» манагеров, создающих спрос на рабочую силу. Это потом, в девяностых, помешательство перешло в терминальную стадию и приобрело знакомую нам форму. Я знакомился с C++ еще до появления C++11, и на тот момент это был неюзабельный треш. Современный же C++ позволяет писать вообще без классов.
Я тоже так думал. Но теперь прихожу к выводу, что раст создан прожженными крестовиками, которые тщательно скопировали недостатки крестов, вроде медленной компиляции и обобщений, устранив лишь самые очевидные всем проблемы.
любой язык низкого уровня похож на С и проблемы у него такие же как и у С, не удивительно что всех их это роднит
Как прожженный сишник, который даже на паскале писал как на Си, для меня вся эта чисто крестово-растовская муть выглядит совершенно дико и не похоже на Си. У Си есть проблемы, но они другие, хоть и в каком-то смысле похуже крестово-растовых.