Какой, по вашему мнению, самый удобный язык для решения/прототипирования и анализа алгоритмических задач?
Собственно, что нужно:
— простая работа с файлами/ввод-вывод
— желательно встроенные структуры данных и понятно как работающие встроенные алгоритмы
— желательно, встроенные средства для работы с большими числами
— желательно, чтоб не тормозил в тех местах, где это не является необходимостью (присутствует в Python?)
— без синтаксического оверхеда (что присутствует в С++/STL)
— средства для анализа производительности кода (space/time complexity)
— что-нибудь еще важное?
Спасибо
Re: Самый удобный язык для решения алгоритмических задач
Здравствуйте, Михaил, Вы писали:
М>Какой, по вашему мнению, самый удобный язык для решения/прототипирования и анализа алгоритмических задач?
Питон. Я его не сильный знаток, сейчас изучаю. Но, кмк, решать на нем алгоритмические задаче проще чем на ООП языках. Меньше синтаксического сахара.
М>Собственно, что нужно: М>- простая работа с файлами/ввод-вывод
Вроде ничего сложного у питона тут нет.
М>- желательно встроенные структуры данных и понятно как работающие встроенные алгоритмы
Все классические структуры типа словаря, хэш-сет и т.д. на месте.
М>- желательно, встроенные средства для работы с большими числами
Из коропки.
М>- желательно, чтоб не тормозил в тех местах, где это не является необходимостью (присутствует в Python?)
Тут уже -- динамика все-таки.
М>- без синтаксического оверхеда (что присутствует в С++/STL)
Это да.
М>- средства для анализа производительности кода (space/time complexity)
Наверняка что-то есть, и в не малом кол-ве. Гугл в помощь.
Кодом людям нужно помогать!
Re: Самый удобный язык для решения алгоритмических задач
Здравствуйте, Михaил, Вы писали:
М>Какой, по вашему мнению, самый удобный язык для решения/прототипирования и анализа алгоритмических задач? М>Собственно, что нужно: М>- простая работа с файлами/ввод-вывод М>- желательно встроенные структуры данных и понятно как работающие встроенные алгоритмы М>- желательно, встроенные средства для работы с большими числами М>- желательно, чтоб не тормозил в тех местах, где это не является необходимостью (присутствует в Python?) М>- без синтаксического оверхеда (что присутствует в С++/STL) М>- средства для анализа производительности кода (space/time complexity) М>- что-нибудь еще важное?
Простой ввод-вывод, структур данных не шибко много, но основные есть, есть большие числа, легко определять свои число-подобные типы с переопределением мат. операторов (например, определить тип матриц из рациональных чисел абсолютной точности и определить + и * для таких матриц и векторов, в том числе гетерогенное умножение — на число, на вектор, на матрицу), скорость уровня С++ (если брать компилятор LDC), синтаксис человечный, отвлекаться на управление памятью не нужно, если сам не захочешь (есть GC по умолчанию). Рассуждать о сложности алгоритмов легко (в отличие от ленивых языков), о потреблении памяти — тоже (все прозрачно довольно, часто можно с точностью до байта предсказать). Профайлеры в наличии.
Re[2]: Самый удобный язык для решения алгоритмических задач
Здравствуйте, Михaил, Вы писали:
М>Какой, по вашему мнению, самый удобный язык для решения/прототипирования и анализа алгоритмических задач? М>Собственно, что нужно: М>- простая работа с файлами/ввод-вывод М>- желательно встроенные структуры данных и понятно как работающие встроенные алгоритмы М>- желательно, встроенные средства для работы с большими числами М>- желательно, чтоб не тормозил в тех местах, где это не является необходимостью (присутствует в Python?) М>- без синтаксического оверхеда (что присутствует в С++/STL) М>- средства для анализа производительности кода (space/time complexity) М>- что-нибудь еще важное?
М>Спасибо
По-моему без разницы. Прям заточенного просто нет, чтобы в стандартной библиотеке были всевозможные структуры данных и тд. А незаточенные — все примерно одинаковы, которые с GC и высокого уровня. А разница в производительности не настолько велика, чтобы это имело значение с правильным алгоритмом. Мне Java нравится, например, но в основном потому, что я её знаю; Idea жутко крутая; дебаггер жутко крутой.
Re: Самый удобный язык для решения алгоритмических задач
Здравствуйте, Михaил, Вы писали:
М>Какой, по вашему мнению, самый удобный язык для решения/прототипирования и анализа алгоритмических задач? М>Собственно, что нужно: М>- простая работа с файлами/ввод-вывод М>- желательно встроенные структуры данных и понятно как работающие встроенные алгоритмы М>- желательно, встроенные средства для работы с большими числами М>- желательно, чтоб не тормозил в тех местах, где это не является необходимостью (присутствует в Python?) М>- без синтаксического оверхеда (что присутствует в С++/STL) М>- средства для анализа производительности кода (space/time complexity) М>- что-нибудь еще важное?
М>Спасибо
Алгоритмы — они разные бывают. Также, для обучения или для работы?
Для обучения: можно смело брать язык, на котором приведены примеры в учебнике.
Для работы: математика — матлаб. нейросети и статистика — питон. Массивы, списки, деревья, графы — С или джава.
Re: Самый удобный язык для решения алгоритмических задач
Здравствуйте, Михaил, Вы писали:
М>Какой, по вашему мнению, самый удобный язык для решения/прототипирования и анализа алгоритмических задач?
Зависит от задачи.
— Для коммерческого прототипирования хорошо подходит Python, простой язык который все если не знают, то однозначно могут читать. Если для себя, то я предпочитаю Clojure по ряду причин.
— Если речь про алгоритмы, которые можно из готовых блоков надергать, то однозначно Python, так как с ним интегрировано почти всё.
— Если же речь про алгоритмы, где цель именно алгоритм, то по выразительности и простоте написания кода мне очень нравится C++.
Re[2]: Самый удобный язык для решения алгоритмических задач
Здравствуйте, Михaил, Вы писали:
М>Какой, по вашему мнению, самый удобный язык для решения/прототипирования и анализа алгоритмических задач? М>Собственно, что нужно: М>- простая работа с файлами/ввод-вывод М>- желательно встроенные структуры данных и понятно как работающие встроенные алгоритмы М>- желательно, встроенные средства для работы с большими числами М>- желательно, чтоб не тормозил в тех местах, где это не является необходимостью (присутствует в Python?) М>- без синтаксического оверхеда (что присутствует в С++/STL) М>- средства для анализа производительности кода (space/time complexity) М>- что-нибудь еще важное?
Julia. Все перечисленное присутствует. Разве что встроенный профайлер не особо хорош, но жить можно.
Re: Самый удобный язык для решения алгоритмических задач
Здравствуйте, Михaил, Вы писали:
М>Какой, по вашему мнению, самый удобный язык
Удобен тот язык, которым давно пользуешься.
М>для решения/прототипирования и анализа алгоритмических задач?
Что за алгоритмические задачи? Хотя бы пример.
М>Собственно, что нужно: М>- простая работа с файлами/ввод-вывод М>- желательно встроенные структуры данных и понятно как работающие встроенные алгоритмы М>- желательно, встроенные средства для работы с большими числами М>- желательно, чтоб не тормозил в тех местах, где это не является необходимостью (присутствует в Python?) М>- без синтаксического оверхеда (что присутствует в С++/STL) М>- средства для анализа производительности кода (space/time complexity) М>- что-нибудь еще важное?
haskell, erlang, python...
А встроенных алгоритмов нигде нет, потребуется докачивать сторонние библиотеки. Большинство современных языков поддерживают подкачку таких библиотек.
Re[3]: Самый удобный язык для решения алгоритмических задач
Здравствуйте, kaa.python, Вы писали:
DM>>D, конечно. DM>>https://dlang.org/phobos/
KP>Прикольный язык, конечно. Жаль что Александреску убил его потенциал широкого коммерческого использования.
Хм, а что по-твоему он сделал плохого?
Там у "руководителей", конечно, большие проблемы с рулением, все время в разные стороны вихляют, так никуда доехать не могут. Но я не знаю, виноват ли в этом именно АА. Мне лично очевиден его положительный вклад в сам язык, его стд библиотеку и философию/идеи (design by introspection).
Re[4]: Самый удобный язык для решения алгоритмических задач
Здравствуйте, D. Mon, Вы писали:
DM>Хм, а что по-твоему он сделал плохого?
С его приходом D начало люто колбасить, появились несовместимые версии (D 2.0, который вроде тоже был не шибко совместим сам с собой и имел кучу ломающих изменений) что сделало язык неприемлемым для массовой коммерческой разработки.
Re: Самый удобный язык для решения алгоритмических задач
Здравствуйте, Михaил, Вы писали:
М>Какой, по вашему мнению, самый удобный язык для решения/прототипирования и анализа алгоритмических задач? М>Собственно, что нужно: М>- простая работа с файлами/ввод-вывод
к алгоритмическим задачам это не имеет отношения, это задача интеграции
М>- желательно встроенные структуры данных и понятно как работающие встроенные алгоритмы
к алгоритмическим задачам это не имеет отношения, это задача интеграции
М>- желательно, встроенные средства для работы с большими числами
к алгоритмическим задачам это не имеет отношения
М>- желательно, чтоб не тормозил в тех местах, где это не является необходимостью (присутствует в Python?)
к алгоритмическим задачам это не имеет отношения
М>- без синтаксического оверхеда (что присутствует в С++/STL)
к алгоритмическим задачам это не имеет отношения
М>- средства для анализа производительности кода (space/time complexity)
к алгоритмическим задачам это не имеет отношения
Re: Самый удобный язык для решения алгоритмических задач
ruby (сам я люблю jvm — java & kotlin).
довольно быстрый, динамически типизированный, легко читаемый, все массивы хэштбалица/могут быть стеком при необходимости, никакого оверхеда.
М>- средства для анализа производительности кода (space/time complexity)
это только в вашей голове