Что лучше подходит для изучения алгоритмов (Python vs C#)?
Я знаю, что похожий вопрос неоднократно поднимался на портале, но у меня более конкретная ситуация: я учусь в университете и, по сути, использую только C# и Python. В целом, думаю, что в будущем буду гораздо больше использовать именно Python, он гораздо ближе ко мне по сфере применения (Data Science, нейронные сети)
Однако, с другой стороны, я боюсь, что из-за его абстракции я не смогу реализовать подобный алгоритм не на самом Python и, если буду иметь дело с более низким уровнем, то попаду в затруднение
абсолютно поддерживаю Василий Банников, рвите стереотипы ))... изучайте, пока хватает молодецкого задора, как можно больше ))
.. шарп мультипарадигменный, и уже функциональный... не ограничивайте себя ;)))
Для изучения алгоритмов подходит любой язык программирования!
А лучше вмего - Дональд Кнут "Искусство программирования" - четырехтомник.
А также изучение шаболнов проектирования.
Раз считаешь, что тебе это нужно - изучай сразу два языка тогда.
Обрати тогда ещё внимание на какие-нибудь совсем низкоуровневые языки. Rust или Си, например - они даже будут полезными при работе с питоном. (смотри pyo3)
А ещё можешь упороться и работать с данными на C# - вроде все инструменты есть :)
Вообще без разницы.
Во-первых, алгоритмы на них (и ещё на десятках других языков) пишутся практически одинаково.
Во-вторых, вряд ли вы ограничитесь одним языком. Не факт даже, что десятком (я вот навскидку насчитал 8, только тех, на которых писал код за деньги – а ещё ж были те, что учил для расширения кругозора и вспомогательные типа bash).
Я не спорю с тем, что вполне возможно сменю язык или буду использовать несколько. Но я помню как разобрал qsort на питоне, после чего не мог реализовать такой же на С#, ведь там не было столько функций. Это очень смутило меня, поэтому и задал... Но сейчас я думаю, что стоит вообще на простом Си, наверное: я хочу каждое действие продумывать. А потом для примера реализовать на Python
В смысле "не было столько функций"? В qsort вроде никакие внешние функции не используются, там есть только сравнение, обмен элементов (присваивание), цикл и рекурсивный вызов.
Или вы про "обвязку", которая нужна для того, чтобы добраться собственно до алгоритма (ну там, прочитать входные данные, вывести результат)? Это вы один раз запомните и всё (можно до того, как приступать к собственно алгоритмам, потратить несколько дней на изучение основ языка и библиотек – самого-самого минимума). Или вообще будете использовать готовый шаблон проги, пока алгоритмы изучаете.
В общем, алгоритмы – отдельная часть CS. Их можно изучать вообще без какого-то формального языка, просто с ручкой и листочком бумаги.
aamonster, когда я читал Гроки, то qsort там был рекурсивный, 2 массива соиялись через оператор +. Конечно, реализовать такое в любом другом языке, не нарушив оптимизацию сложно
Для изучения алгоритмов используй тот, с к-рым у тебя нет затруднений
Был в похожей ситуации: у меня целевой ЯП C#, но и на Python работал. Во время прохождения курса по алгоритмам решил писать на Python, чтобы вспомнить его. Но после второй или третьей задачи перешёл на C#. Почему: из-за недостатка опыта на Python слишком много отвлекался на синтаксис ЯП, а не на сам алгоритм.