Да бог с ним с хешем, тем более, что сейчас вы его поправили. Теперь, правда, документация некорректна. Там уже O(n), и не то, чтобы реализация быстрая.
Теперь возьмём ds_push. Каждый вызов делает новую строку (с новой аллокацией памяти), что совсем необязательною Иногда хочется расширять строку, добавляя в конец элементы. Но ваша строка такой API не предоставляет в отличии от критикуемой вами стандартной библиотеки. При этом с ds_push очень легко словить утечку, а при использовании в цикле получить O(n^2). Но страдать с несуразностями этого API вы предоставляете пользователю.
Беда вашего подхода не в том, что реализация строки УГ - это нормально для экспериментов в период обучения. Нормально и то, что вы пока сами не осознаёте, насколько эта реализация ужасна.
Проблема в том, что вы огульно охаиваете другие решения, не пытаясь разобраться в том, какие осознанные решения были приняты и как они повлияли на реализацию.
Уровень реализации не соответствует уровню пафоса. Хеш одинаковых строк должен быть одинаковым - в вашей реализации это не так. Пока, к сожалению, не тянет даже на учебную поделку.
Ну откуда берётся такое желание всё взять и запретить, да ещё как часто бывает, прикрываясь аргументацией о защите детей?
В той же Германии этот запрет это смесь - желание интегрировать разнородные общины в одно общество, воспитание лояльных к политической системе граждан и только отчасти вопрос социализации. Я не говорю, что это хорошо или плохо, но психологическое развитие детей здесь явно не доминирующая мотивация.
Можно подумать, что ребёнок без школы находится в вакууме. В плане социализации он как минимум уже находится в социуме - родители, бабушки/дедушки, близкие друзья. Имбовое место для прокачки - песочница. Ребёнок часто ходит в какие-нибудь секции (спорт/музыка и т.п.), у него есть друзья во дворе ещё с детского сада. Если ребёнок ведёт активную жизнь вне дома, то в смысле развития социальных навыков школа вполне заменима
Начнём с "эффекта зловещей долины". Код типа такого `список сложить(один, два, три)` лично у меня вызывает только брезгливость. Если это русский, то пусть будет хотя бы `сложи список (...)`. Иначе это воспринимается как безграмотность и издевательство над русским языком.
С практической точки зрения кодировать неудобно. Вероятней всего не избежать частого переключения раскладок.
И тут уже кто-то приводил аргумент, что язык математики не локализуют (синус, интеграл, и т.п.). Мне симпатична такая аналогия
Поскольку критериев выбора синтаксиса у вас всё равно нет, то рекомендую посмотреть ещё в одну сторону. Самый красивый синтаксис который я видел, это в семействе ML-языков (Ocaml, Standard ML of New Jersey) или на худой конец в Haskell
Ну ok, раз речь про "Невероятно быстрый алгоритм нахождения простых делителей огромных составных чисел", то сколько ваш алгоритм будет факторизовать вот такое не слишком огромное число?
Скачивайте карты мира от Генштаба СССР. Они уже 80 лет как не устаревают.
Ещё как устаревают, даже без учёта хозяйственной деятельности челокека. Из самого заметного тают ледники, что влияет на тропы и сложность маршрутов. Появляются/исчезают озёра, меняются русла рек, переправы
Стандарт C++98 короче. А вот код, сопоставимый по производительности и функционалу, будет более многословным и намного менее читабельным по сравнению с C++11/14/... Потребуется возвращать результат через выходные параметры, работать с индексами или итераторами для обхода коллекции, явно прописывать типы в прикладном коде. В общем - страшный сон, который хочется поскорее забыть.
Если современный C++ позволяет писать код, приближающийся по читабельности к python, то C++98 недостаточно выразителен - там приходится страдать и писать кучу обслуживающего кода, не относящегося напрямую к логике алгоритма
Смена компилятора, даже внутри одной линейки, это сложно для нетривиальной кодовой базы. Ошибки компиляции только вершина айсберга, да и бороться с ними не так сложно. Гораздо опасней UB, которые могут проявляться по разному. То есть код успешно будет собираться, но приложение собранное одном компилятором работает "нормально", а собранное другим периодически крешится
Это в большей степени не про обратную совместимость, хотя и в рамках одной линейки компиляторов от версии к версии подобные приколы бывают. Лечится только тестированием сборок под разными компиляторами, санитайзерами, статическими анализаторами и т.п.
И вы не один такой. Если пробовать читать исходники библиотеки типа boost, которая работает на широком наборе компиляторов разных версий, то можно увидеть много приседаний для поддержки работоспособности
Давно, будучи студентом, наткнулся на такой язык, как Standard ML of New Jersey. Помню, что это был эстетический восторг.
Он не слишком известен и скорее академический. Из ближайших родственников - это OCaml. Семейство ML-языков сильно повлияло на Haskell / F# и на индустрию в целом (алгебраические типы, Continuation‑Passing Style, вывод типов Hindley‑Milner и т.п.). Интересно наблюдать, как через десятки лет идеи оттуда проникают, трансформируясь по пути, в современные mainstream языки (Rust/C++/Python/Kotlin/...).
Интересно было бы пофантазировать, каково изучать в качестве первого языка что-то типа OCaml.
Да бог с ним с хешем, тем более, что сейчас вы его поправили. Теперь, правда, документация некорректна. Там уже O(n), и не то, чтобы реализация быстрая.
Теперь возьмём
ds_push. Каждый вызов делает новую строку (с новой аллокацией памяти), что совсем необязательною Иногда хочется расширять строку, добавляя в конец элементы. Но ваша строка такой API не предоставляет в отличии от критикуемой вами стандартной библиотеки. При этом с ds_push очень легко словить утечку, а при использовании в цикле получить O(n^2). Но страдать с несуразностями этого API вы предоставляете пользователю.Беда вашего подхода не в том, что реализация строки УГ - это нормально для экспериментов в период обучения. Нормально и то, что вы пока сами не осознаёте, насколько эта реализация ужасна.
Проблема в том, что вы огульно охаиваете другие решения, не пытаясь разобраться в том, какие осознанные решения были приняты и как они повлияли на реализацию.
Уровень реализации не соответствует уровню пафоса. Хеш одинаковых строк должен быть одинаковым - в вашей реализации это не так. Пока, к сожалению, не тянет даже на учебную поделку.
Вы меня с кем-то перепутали. Я не писал, что "родители, дедушки и бабушки заменят школу"
Ну откуда берётся такое желание всё взять и запретить, да ещё как часто бывает, прикрываясь аргументацией о защите детей?
В той же Германии этот запрет это смесь - желание интегрировать разнородные общины в одно общество, воспитание лояльных к политической системе граждан и только отчасти вопрос социализации. Я не говорю, что это хорошо или плохо, но психологическое развитие детей здесь явно не доминирующая мотивация.
Можно подумать, что ребёнок без школы находится в вакууме. В плане социализации он как минимум уже находится в социуме - родители, бабушки/дедушки, близкие друзья. Имбовое место для прокачки - песочница. Ребёнок часто ходит в какие-нибудь секции (спорт/музыка и т.п.), у него есть друзья во дворе ещё с детского сада. Если ребёнок ведёт активную жизнь вне дома, то в смысле развития социальных навыков школа вполне заменима
Прямо "Стиральная трагедия" Лема уже получается
Чисто по фану, чтобы чуть меньше тошнило от коверканья русского языка
Русский язык - отдельное спорное решение.
Начнём с "эффекта зловещей долины". Код типа такого `список сложить(один, два, три)` лично у меня вызывает только брезгливость. Если это русский, то пусть будет хотя бы `сложи список (...)`. Иначе это воспринимается как безграмотность и издевательство над русским языком.
С практической точки зрения кодировать неудобно. Вероятней всего не избежать частого переключения раскладок.
И тут уже кто-то приводил аргумент, что язык математики не локализуют (синус, интеграл, и т.п.). Мне симпатична такая аналогия
Поскольку критериев выбора синтаксиса у вас всё равно нет, то рекомендую посмотреть ещё в одну сторону. Самый красивый синтаксис который я видел, это в семействе ML-языков (Ocaml, Standard ML of New Jersey) или на худой конец в Haskell
В очередной раз о пользе plan mode и проверкой вручную или с помощью другой модельки
Ну ok, раз речь про "Невероятно быстрый алгоритм нахождения простых делителей огромных составных чисел", то сколько ваш алгоритм будет факторизовать вот такое не слишком огромное число?
Скрытый текст
Число получено как перемножение вот этих двух чисел из интернета (гугл говорит, что оба простые)
Не факт. Им вполне могли выкатить счет. Не знаю их конкретный случай, но сомневаюсь, что у там была страховка с включенной эвакуацией вертолетом
Ещё как устаревают, даже без учёта хозяйственной деятельности челокека. Из самого заметного тают ледники, что влияет на тропы и сложность маршрутов. Появляются/исчезают озёра, меняются русла рек, переправы
А поделитесь примерами? Такое не на слуху, интересно было бы посмотреть
С такой подготовкой как у них, даже то что они сделали, уже превысило мои ожидания. Могли бы и дальше ломиться "до победного".
Даже если они расчитывали на 5ч прогулку, поллитра на человека это очень мало. Хорошо, хоть хватило ума развернуться и вызвать спасателей
Лесной пожар, кажется, тоже подходит под ваше определение живого.
Стандарт C++98 короче. А вот код, сопоставимый по производительности и функционалу, будет более многословным и намного менее читабельным по сравнению с C++11/14/... Потребуется возвращать результат через выходные параметры, работать с индексами или итераторами для обхода коллекции, явно прописывать типы в прикладном коде. В общем - страшный сон, который хочется поскорее забыть.
Если современный C++ позволяет писать код, приближающийся по читабельности к python, то C++98 недостаточно выразителен - там приходится страдать и писать кучу обслуживающего кода, не относящегося напрямую к логике алгоритма
Смена компилятора, даже внутри одной линейки, это сложно для нетривиальной кодовой базы. Ошибки компиляции только вершина айсберга, да и бороться с ними не так сложно. Гораздо опасней UB, которые могут проявляться по разному. То есть код успешно будет собираться, но приложение собранное одном компилятором работает "нормально", а собранное другим периодически крешится
Это в большей степени не про обратную совместимость, хотя и в рамках одной линейки компиляторов от версии к версии подобные приколы бывают. Лечится только тестированием сборок под разными компиляторами, санитайзерами, статическими анализаторами и т.п.
И вы не один такой. Если пробовать читать исходники библиотеки типа boost, которая работает на широком наборе компиляторов разных версий, то можно увидеть много приседаний для поддержки работоспособности
Давно, будучи студентом, наткнулся на такой язык, как Standard ML of New Jersey. Помню, что это был эстетический восторг.
Он не слишком известен и скорее академический. Из ближайших родственников - это OCaml. Семейство ML-языков сильно повлияло на Haskell / F# и на индустрию в целом (алгебраические типы, Continuation‑Passing Style, вывод типов Hindley‑Milner и т.п.). Интересно наблюдать, как через десятки лет идеи оттуда проникают, трансформируясь по пути, в современные mainstream языки (Rust/C++/Python/Kotlin/...).
Интересно было бы пофантазировать, каково изучать в качестве первого языка что-то типа OCaml.