Решать алгоритмические задачи на C или на Scala, C#, Ruby?
От: Darooma Россия  
Дата: 18.03.14 10:50
Оценка:
Будет ли полезнее решать (кодировать) алгоритмические задачи на C чем, например, на Scala, Ruby или C#? Полезнее с точки зрения того, что решая кодируя решение задачи на С можно лучше ее понять, ее алгоритм, потому как С — более низкоуровневый язык. То, что в Ruby можно сделать одной строкой (обменять значения переменных a, b = b, a) в С займет несколько.
Re: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
От: Sinix  
Дата: 18.03.14 10:55
Оценка:
Здравствуйте, Darooma, Вы писали:

D>Будет ли полезнее решать (кодировать) алгоритмические задачи на C чем, например, на Scala, Ruby или C#? Полезнее с точки зрения того, что решая кодируя решение задачи на С можно лучше ее понять, ее алгоритм, потому как С — более низкоуровневый язык. То, что в Ruby можно сделать одной строкой (обменять значения переменных a, b = b, a) в С займет несколько.


Если речь про чисто исследовательские задачи, то я предпочту язык, который будет максимально похож на изложение алгоритма на бумаге, без необходимости отвлекаться на особенности языка или изобретать велосипеды для стандартных алгоритмов.

Если речь про продакшн, то там о выборе языка обычно речь вообще не идёт, что умеет команда — то и используем.
Re: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
От: vmpire Россия  
Дата: 18.03.14 11:02
Оценка:
Здравствуйте, Darooma, Вы писали:

D>Будет ли полезнее решать (кодировать) алгоритмические задачи на C чем, например, на Scala, Ruby или C#? Полезнее с точки зрения того, что решая кодируя решение задачи на С можно лучше ее понять, ее алгоритм, потому как С — более низкоуровневый язык. То, что в Ruby можно сделать одной строкой (обменять значения переменных a, b = b, a) в С займет несколько.

Если под "полезнее" имеется в виду "полезнее для самообразования" — зависит от направления самообразования.
Чистые алгоритмы — С++/С#/Java/Pascal.... Много что подойдёт, но предпочтительнее императивный строго типизированный язык.
Функциональные алгоритмы (странное словосочетание, конечно) — функциональный язык (Scala, F#, Smalltalk, Lisp)
Алгоритмы работы с железом,памятью — С/С++/asm
Математические алгоритмы — что-нибудь специализированное типа MathLab
В общем, для выбора языка нужно вначале более чётко поставить цель.
Re: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 18.03.14 11:18
Оценка: 3 (1) +3
Здравствуйте, Darooma, Вы писали:

D>кодируя решение задачи на С можно лучше ее понять, ее алгоритм, потому как С — более низкоуровневый язык. То, что в Ruby можно сделать одной строкой (обменять значения переменных a, b = b, a) в С займет несколько.


Наилучшему пониманию задачи способствует ее кодирование на языке, позволяющем оперировать абстракциями, наиболее близкими к ее предметной области. Как правило, это сверхвысокоуровневые языки предметной области или высокоуровневые языки со специализированными domain-фреймворками

JFYI: в питоне (и, насколько мне известно, в руби тоже) a, b = b, a является тривиальным применением механизма распаковки кортежей, который в свою очередь, является частным случаем сопоставления с образцом. Несколько строк на C, обменивающие значение двух переменных, никоим образом не дадут представление ни об одном из этих двух механизмов.
... << RSDN@Home 1.2.0 alpha 5 rev. 76>>

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
От: a_g_99 США http://www.hooli.xyz/
Дата: 18.03.14 12:05
Оценка:
Здравствуйте, Darooma, Вы писали:

D>Будет ли полезнее решать (кодировать) алгоритмические задачи на C чем, например, на Scala, Ruby или C#? Полезнее с точки зрения того, что решая кодируя решение задачи на С можно лучше ее понять, ее алгоритм, потому как С — более низкоуровневый язык. То, что в Ruby можно сделать одной строкой (обменять значения переменных a, b = b, a) в С займет несколько.


Сразу вспомнил про Максима2, земля ему пухом.
Re[2]: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
От: Darooma Россия  
Дата: 18.03.14 12:23
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, Darooma, Вы писали:


D>>Будет ли полезнее решать (кодировать) алгоритмические задачи на C чем, например, на Scala, Ruby или C#? Полезнее с точки зрения того, что решая кодируя решение задачи на С можно лучше ее понять, ее алгоритм, потому как С — более низкоуровневый язык. То, что в Ruby можно сделать одной строкой (обменять значения переменных a, b = b, a) в С займет несколько.


S>Если речь про чисто исследовательские задачи, то я предпочту язык, который будет максимально похож на изложение алгоритма на бумаге, без необходимости отвлекаться на особенности языка или изобретать велосипеды для стандартных алгоритмов.


исследовательские задачи, для того, чтобы подготовиться к собеседованиям и для самообразования.
Re: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
От: _DAle_ Беларусь  
Дата: 18.03.14 12:26
Оценка:
Здравствуйте, Darooma, Вы писали:

D>Будет ли полезнее решать (кодировать) алгоритмические задачи на C чем, например, на Scala, Ruby или C#? Полезнее с точки зрения того, что решая кодируя решение задачи на С можно лучше ее понять, ее алгоритм, потому как С — более низкоуровневый язык. То, что в Ruby можно сделать одной строкой (обменять значения переменных a, b = b, a) в С займет несколько.


На мой взгляд, если говорить именно про "алгоритмические задачи", то большой разницы, на чем их писать, нет. Даже какой-нибудь простой алгоритм Дейкстры выглядит на Ruby примерно так же, как и на С. Я пробовал решать на Ruby задачки.. какое-то преимущество получается только в простейших случаях, когда надо как-то парсить строки или преобразовывать последовательности. В остальном же получилось, что никакого особого преимущества перед тем же с++ нет. А недостатков, начиная с производительности, хватает.
Но, вообще, все зависит от того, какую именно пользу ты хочешь извлечь? Изучение алгоритмики? Изучение какого-нибудь языка, решая задачки? Спортивное программирование?
Re[3]: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
От: Sinix  
Дата: 18.03.14 13:05
Оценка:
Здравствуйте, Darooma, Вы писали:

S>>Если речь про чисто исследовательские задачи, то я предпочту язык, который будет максимально похож на изложение алгоритма на бумаге, без необходимости отвлекаться на особенности языка или изобретать велосипеды для стандартных алгоритмов.


D>исследовательские задачи, для того, чтобы подготовиться к собеседованиям и для самообразования.


Если для собеседования, то надо смотреть в первую очередь на популярные языки/библиотеки, с учётом предметной области конечно.
Я сильно сомневаюсь что, например, для computer vision будут спрашивать что-то кроме c++, а для наколенного алготрейдинга — что-то кроме стандартных явы-шарпа-питона.

Для себя — что угодно, к чему душа лежит. Главное, чтобы у вас была реальная задача и вы смогли оценить насколько выбранный язык вам подошёл. Отрицательный опыт не менее полезен, чем положительный, без сарказма.
Re[2]: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
От: Darooma Россия  
Дата: 18.03.14 13:21
Оценка:
Здравствуйте, _DAle_, Вы писали:

_DA>Здравствуйте, Darooma, Вы писали:


D>>Будет ли полезнее решать (кодировать) алгоритмические задачи на C чем, например, на Scala, Ruby или C#? Полезнее с точки зрения того, что решая кодируя решение задачи на С можно лучше ее понять, ее алгоритм, потому как С — более низкоуровневый язык. То, что в Ruby можно сделать одной строкой (обменять значения переменных a, b = b, a) в С займет несколько.


_DA>На мой взгляд, если говорить именно про "алгоритмические задачи", то большой разницы, на чем их писать, нет. Даже какой-нибудь простой алгоритм Дейкстры выглядит на Ruby примерно так же, как и на С. Я пробовал решать на Ruby задачки.. какое-то преимущество получается только в простейших случаях, когда надо как-то парсить строки или преобразовывать последовательности. В остальном же получилось, что никакого особого преимущества перед тем же с++ нет. А недостатков, начиная с производительности, хватает.

_DA>Но, вообще, все зависит от того, какую именно пользу ты хочешь извлечь? Изучение алгоритмики? Изучение какого-нибудь языка, решая задачки? Спортивное программирование?

Изучение алгоритмик на более глубом уровне.
Re: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
От: __kot2  
Дата: 18.03.14 15:10
Оценка:
Здравствуйте, Darooma, Вы писали:
D>Будет ли полезнее решать (кодировать) алгоритмические задачи на C чем, например, на Scala, Ruby или C#? Полезнее с точки зрения того, что решая кодируя решение задачи на С можно лучше ее понять, ее алгоритм, потому как С — более низкоуровневый язык. То, что в Ruby можно сделать одной строкой (обменять значения переменных a, b = b, a) в С займет несколько.
соб-но говоря, чего Страуструп-то стал С++ разрабатывать историю читали? он сначала написал на С — вышло хреново структурировано и забаговано, потом написал на Smalltalk — вышло красиво, но тормознуто, взял высокоуровневые фишки Smalllalk втащил в С им получил то, что всех стало устраивать
Re[3]: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
От: _DAle_ Беларусь  
Дата: 18.03.14 15:22
Оценка:
Здравствуйте, 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?
От: nikov США http://www.linkedin.com/in/nikov
Дата: 19.03.14 03:23
Оценка:
Здравствуйте, Darooma, Вы писали:

D>Будет ли полезнее решать (кодировать) алгоритмические задачи на C чем, например, на Scala, Ruby или C#? Полезнее с точки зрения того, что решая кодируя решение задачи на С можно лучше ее понять, ее алгоритм, потому как С — более низкоуровневый язык. То, что в Ruby можно сделать одной строкой (обменять значения переменных a, b = b, a) в С займет несколько.


Попробуй решать на C и на Haskell, и потом сравнивать понятность кода.
Re[2]: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
От: Darooma Россия  
Дата: 19.03.14 12:25
Оценка:
Здравствуйте, nikov, Вы писали:

N>Здравствуйте, Darooma, Вы писали:


D>>Будет ли полезнее решать (кодировать) алгоритмические задачи на C чем, например, на Scala, Ruby или C#? Полезнее с точки зрения того, что решая кодируя решение задачи на С можно лучше ее понять, ее алгоритм, потому как С — более низкоуровневый язык. То, что в Ruby можно сделать одной строкой (обменять значения переменных a, b = b, a) в С займет несколько.


N>Попробуй решать на C и на Haskell, и потом сравнивать понятность кода.


на Haskell понятнее, не спорю. на С легче в целом.
Re: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
От: Mamut Швеция http://dmitriid.com
Дата: 20.03.14 09:17
Оценка:
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) );
}





Ну и т.п. тут
Автор: kochetkov.vladimir
Дата: 18.03.14
, в принципе, все сказано.


dmitriid.comGitHubLinkedIn
Re[2]: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 20.03.14 09:34
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Из этого напрямую следует, что алгоритм на Руби будет более понятен, чем на С, не?


Зависит от того, что это за алгоритм. Бывают алгоритмы, ориентированные, скажем, на минимизацию расхода памяти или учет особенностей современных процессоров. Попытка их реализации на Руби может привести к профанации идеи.
... << RSDN@Home 1.2.0 alpha 5 rev. 100 on Windows 8 6.2.9200.0>>
AVK Blog
Re[3]: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
От: Mamut Швеция http://dmitriid.com
Дата: 20.03.14 12:50
Оценка:
M>>Из этого напрямую следует, что алгоритм на Руби будет более понятен, чем на С, не?

AVK>Зависит от того, что это за алгоритм. Бывают алгоритмы, ориентированные, скажем, на минимизацию расхода памяти или учет особенностей современных процессоров. Попытка их реализации на Руби может привести к профанации идеи.


Ну, это безусловно


dmitriid.comGitHubLinkedIn
Re[2]: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
От: antropolog  
Дата: 20.03.14 17:02
Оценка:
Здравствуйте, Mamut, Вы писали:

в Си есть недоматчинг-тернарный оператор

int Fibonacci(int);

int Fibonacci(int n)
{
  return 
     n == 0 ? 0
   : n == 1 ? 1
   : Fibbonacci( n - 1) + Fibbonacci( n - 2 );
}
Re: Решать алгоритмические задачи на C или на Scala, C#, Ruby?
От: andyag  
Дата: 20.03.14 17:51
Оценка: :)
Здравствуйте, Darooma, Вы писали:

D>Будет ли полезнее решать (кодировать) алгоритмические задачи на C чем, например, на Scala, Ruby или C#? Полезнее с точки зрения того, что решая кодируя решение задачи на С можно лучше ее понять, ее алгоритм, потому как С — более низкоуровневый язык. То, что в Ruby можно сделать одной строкой (обменять значения переменных a, b = b, a) в С займет несколько.


Самый лучший язык — это JavaScript.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.