Будет ли полезнее решать (кодировать) алгоритмические задачи на C чем, например, на Scala, Ruby или C#? Полезнее с точки зрения того, что решая кодируя решение задачи на С можно лучше ее понять, ее алгоритм, потому как С — более низкоуровневый язык. То, что в Ruby можно сделать одной строкой (обменять значения переменных a, b = b, a) в С займет несколько.
Re: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
Здравствуйте, Darooma, Вы писали:
D>Будет ли полезнее решать (кодировать) алгоритмические задачи на C чем, например, на Scala, Ruby или C#? Полезнее с точки зрения того, что решая кодируя решение задачи на С можно лучше ее понять, ее алгоритм, потому как С — более низкоуровневый язык. То, что в Ruby можно сделать одной строкой (обменять значения переменных a, b = b, a) в С займет несколько.
Если речь про чисто исследовательские задачи, то я предпочту язык, который будет максимально похож на изложение алгоритма на бумаге, без необходимости отвлекаться на особенности языка или изобретать велосипеды для стандартных алгоритмов.
Если речь про продакшн, то там о выборе языка обычно речь вообще не идёт, что умеет команда — то и используем.
Re: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
Здравствуйте, Darooma, Вы писали:
D>Будет ли полезнее решать (кодировать) алгоритмические задачи на C чем, например, на Scala, Ruby или C#? Полезнее с точки зрения того, что решая кодируя решение задачи на С можно лучше ее понять, ее алгоритм, потому как С — более низкоуровневый язык. То, что в Ruby можно сделать одной строкой (обменять значения переменных a, b = b, a) в С займет несколько.
Если под "полезнее" имеется в виду "полезнее для самообразования" — зависит от направления самообразования.
Чистые алгоритмы — С++/С#/Java/Pascal.... Много что подойдёт, но предпочтительнее императивный строго типизированный язык.
Функциональные алгоритмы (странное словосочетание, конечно) — функциональный язык (Scala, F#, Smalltalk, Lisp)
Алгоритмы работы с железом,памятью — С/С++/asm
Математические алгоритмы — что-нибудь специализированное типа MathLab
В общем, для выбора языка нужно вначале более чётко поставить цель.
Re: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
Здравствуйте, Darooma, Вы писали:
D>кодируя решение задачи на С можно лучше ее понять, ее алгоритм, потому как С — более низкоуровневый язык. То, что в Ruby можно сделать одной строкой (обменять значения переменных a, b = b, a) в С займет несколько.
Наилучшему пониманию задачи способствует ее кодирование на языке, позволяющем оперировать абстракциями, наиболее близкими к ее предметной области. Как правило, это сверхвысокоуровневые языки предметной области или высокоуровневые языки со специализированными domain-фреймворками
JFYI: в питоне (и, насколько мне известно, в руби тоже) a, b = b, a является тривиальным применением механизма распаковки кортежей, который в свою очередь, является частным случаем сопоставления с образцом. Несколько строк на C, обменивающие значение двух переменных, никоим образом не дадут представление ни об одном из этих двух механизмов.
Здравствуйте, Darooma, Вы писали:
D>Будет ли полезнее решать (кодировать) алгоритмические задачи на C чем, например, на Scala, Ruby или C#? Полезнее с точки зрения того, что решая кодируя решение задачи на С можно лучше ее понять, ее алгоритм, потому как С — более низкоуровневый язык. То, что в Ruby можно сделать одной строкой (обменять значения переменных a, b = b, a) в С займет несколько.
Сразу вспомнил про Максима2, земля ему пухом.
Re[2]: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, Darooma, Вы писали:
D>>Будет ли полезнее решать (кодировать) алгоритмические задачи на C чем, например, на Scala, Ruby или C#? Полезнее с точки зрения того, что решая кодируя решение задачи на С можно лучше ее понять, ее алгоритм, потому как С — более низкоуровневый язык. То, что в Ruby можно сделать одной строкой (обменять значения переменных a, b = b, a) в С займет несколько.
S>Если речь про чисто исследовательские задачи, то я предпочту язык, который будет максимально похож на изложение алгоритма на бумаге, без необходимости отвлекаться на особенности языка или изобретать велосипеды для стандартных алгоритмов.
исследовательские задачи, для того, чтобы подготовиться к собеседованиям и для самообразования.
Re: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
Здравствуйте, Darooma, Вы писали:
D>Будет ли полезнее решать (кодировать) алгоритмические задачи на C чем, например, на Scala, Ruby или C#? Полезнее с точки зрения того, что решая кодируя решение задачи на С можно лучше ее понять, ее алгоритм, потому как С — более низкоуровневый язык. То, что в Ruby можно сделать одной строкой (обменять значения переменных a, b = b, a) в С займет несколько.
На мой взгляд, если говорить именно про "алгоритмические задачи", то большой разницы, на чем их писать, нет. Даже какой-нибудь простой алгоритм Дейкстры выглядит на Ruby примерно так же, как и на С. Я пробовал решать на Ruby задачки.. какое-то преимущество получается только в простейших случаях, когда надо как-то парсить строки или преобразовывать последовательности. В остальном же получилось, что никакого особого преимущества перед тем же с++ нет. А недостатков, начиная с производительности, хватает.
Но, вообще, все зависит от того, какую именно пользу ты хочешь извлечь? Изучение алгоритмики? Изучение какого-нибудь языка, решая задачки? Спортивное программирование?
Re[3]: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
Здравствуйте, Darooma, Вы писали:
S>>Если речь про чисто исследовательские задачи, то я предпочту язык, который будет максимально похож на изложение алгоритма на бумаге, без необходимости отвлекаться на особенности языка или изобретать велосипеды для стандартных алгоритмов.
D>исследовательские задачи, для того, чтобы подготовиться к собеседованиям и для самообразования.
Если для собеседования, то надо смотреть в первую очередь на популярные языки/библиотеки, с учётом предметной области конечно.
Я сильно сомневаюсь что, например, для computer vision будут спрашивать что-то кроме c++, а для наколенного алготрейдинга — что-то кроме стандартных явы-шарпа-питона.
Для себя — что угодно, к чему душа лежит. Главное, чтобы у вас была реальная задача и вы смогли оценить насколько выбранный язык вам подошёл. Отрицательный опыт не менее полезен, чем положительный, без сарказма.
Re[2]: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
Здравствуйте, _DAle_, Вы писали:
_DA>Здравствуйте, Darooma, Вы писали:
D>>Будет ли полезнее решать (кодировать) алгоритмические задачи на C чем, например, на Scala, Ruby или C#? Полезнее с точки зрения того, что решая кодируя решение задачи на С можно лучше ее понять, ее алгоритм, потому как С — более низкоуровневый язык. То, что в Ruby можно сделать одной строкой (обменять значения переменных a, b = b, a) в С займет несколько.
_DA>На мой взгляд, если говорить именно про "алгоритмические задачи", то большой разницы, на чем их писать, нет. Даже какой-нибудь простой алгоритм Дейкстры выглядит на Ruby примерно так же, как и на С. Я пробовал решать на Ruby задачки.. какое-то преимущество получается только в простейших случаях, когда надо как-то парсить строки или преобразовывать последовательности. В остальном же получилось, что никакого особого преимущества перед тем же с++ нет. А недостатков, начиная с производительности, хватает. _DA>Но, вообще, все зависит от того, какую именно пользу ты хочешь извлечь? Изучение алгоритмики? Изучение какого-нибудь языка, решая задачки? Спортивное программирование?
Изучение алгоритмик на более глубом уровне.
Re: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
Здравствуйте, Darooma, Вы писали: D>Будет ли полезнее решать (кодировать) алгоритмические задачи на C чем, например, на Scala, Ruby или C#? Полезнее с точки зрения того, что решая кодируя решение задачи на С можно лучше ее понять, ее алгоритм, потому как С — более низкоуровневый язык. То, что в Ruby можно сделать одной строкой (обменять значения переменных a, b = b, a) в С займет несколько.
соб-но говоря, чего Страуструп-то стал С++ разрабатывать историю читали? он сначала написал на С — вышло хреново структурировано и забаговано, потом написал на Smalltalk — вышло красиво, но тормознуто, взял высокоуровневые фишки Smalllalk втащил в С им получил то, что всех стало устраивать
Re[3]: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
Здравствуйте, Darooma, Вы писали:
D>Здравствуйте, _DAle_, Вы писали:
_DA>>Здравствуйте, Darooma, Вы писали:
D>>>Будет ли полезнее решать (кодировать) алгоритмические задачи на C чем, например, на Scala, Ruby или C#? Полезнее с точки зрения того, что решая кодируя решение задачи на С можно лучше ее понять, ее алгоритм, потому как С — более низкоуровневый язык. То, что в Ruby можно сделать одной строкой (обменять значения переменных a, b = b, a) в С займет несколько.
_DA>>На мой взгляд, если говорить именно про "алгоритмические задачи", то большой разницы, на чем их писать, нет. Даже какой-нибудь простой алгоритм Дейкстры выглядит на Ruby примерно так же, как и на С. Я пробовал решать на Ruby задачки.. какое-то преимущество получается только в простейших случаях, когда надо как-то парсить строки или преобразовывать последовательности. В остальном же получилось, что никакого особого преимущества перед тем же с++ нет. А недостатков, начиная с производительности, хватает. _DA>>Но, вообще, все зависит от того, какую именно пользу ты хочешь извлечь? Изучение алгоритмики? Изучение какого-нибудь языка, решая задачки? Спортивное программирование?
D>Изучение алгоритмик на более глубом уровне.
Тогда, мне кажется, нужно просто взять наиболее знакомый инструмент (или тот, который больше нравится), чтобы как можно меньше времени тратить на вопросы, не связанные с алгоритмикой.
Re: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
Здравствуйте, Darooma, Вы писали:
D>Будет ли полезнее решать (кодировать) алгоритмические задачи на C чем, например, на Scala, Ruby или C#? Полезнее с точки зрения того, что решая кодируя решение задачи на С можно лучше ее понять, ее алгоритм, потому как С — более низкоуровневый язык. То, что в Ruby можно сделать одной строкой (обменять значения переменных a, b = b, a) в С займет несколько.
Попробуй решать на C и на Haskell, и потом сравнивать понятность кода.
Re[2]: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
Здравствуйте, nikov, Вы писали:
N>Здравствуйте, Darooma, Вы писали:
D>>Будет ли полезнее решать (кодировать) алгоритмические задачи на C чем, например, на Scala, Ruby или C#? Полезнее с точки зрения того, что решая кодируя решение задачи на С можно лучше ее понять, ее алгоритм, потому как С — более низкоуровневый язык. То, что в Ruby можно сделать одной строкой (обменять значения переменных a, b = b, a) в С займет несколько.
N>Попробуй решать на C и на Haskell, и потом сравнивать понятность кода.
на Haskell понятнее, не спорю. на С легче в целом.
Re: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
D>Будет ли полезнее решать (кодировать) алгоритмические задачи на C чем, например, на Scala, Ruby или C#? Полезнее с точки зрения того, что решая кодируя решение задачи на С можно лучше ее понять, ее алгоритм, потому как С — более низкоуровневый язык. То, что в Ruby можно сделать одной строкой (обменять значения переменных a, b = b, a) в С займет несколько.
Из этого напрямую следует, что алгоритм на Руби будет более понятен, чем на С, не?
Алгори́тм — набор инструкций, описывающих порядок действий исполнителя для достижения результата решения задачи за конечное число действий.
Например, вычисление чисел Фибоначчи выглядит так:
На любом языке, в котором нет сопоставления с образцом, запись этого будет менее понятна, чем на языке, в котором сопоставление есть:
f(0) -> 1;
f(1) -> 1;
f(N) when N > 1 -> f(N-1) + f(N-2)
против
int Fibonacci(int);
int Fibonacci(int n)
{
if ( n == 0 )
return 0;
else if ( n == 1 )
return 1;
else
return ( Fibonacci(n-1) + Fibonacci(n-2) );
}
Здравствуйте, Mamut, Вы писали:
M>Из этого напрямую следует, что алгоритм на Руби будет более понятен, чем на С, не?
Зависит от того, что это за алгоритм. Бывают алгоритмы, ориентированные, скажем, на минимизацию расхода памяти или учет особенностей современных процессоров. Попытка их реализации на Руби может привести к профанации идеи.
... << RSDN@Home 1.2.0 alpha 5 rev. 100 on Windows 8 6.2.9200.0>>
M>>Из этого напрямую следует, что алгоритм на Руби будет более понятен, чем на С, не?
AVK>Зависит от того, что это за алгоритм. Бывают алгоритмы, ориентированные, скажем, на минимизацию расхода памяти или учет особенностей современных процессоров. Попытка их реализации на Руби может привести к профанации идеи.
Здравствуйте, Darooma, Вы писали:
D>Будет ли полезнее решать (кодировать) алгоритмические задачи на C чем, например, на Scala, Ruby или C#? Полезнее с точки зрения того, что решая кодируя решение задачи на С можно лучше ее понять, ее алгоритм, потому как С — более низкоуровневый язык. То, что в Ruby можно сделать одной строкой (обменять значения переменных a, b = b, a) в С займет несколько.