2010-06-23 1 views
1

Я знаю некоторые рубин язык. Теперь мне нужно сделать некоторые разработки .net. Я не хочу изучать новый язык. Итак, после googling я получил IronRuby. Теперь мой вопрос: могу ли я использовать IronRuby для написания всех приложений, которые может написать C#?Теоретически, я могу использовать IronRuby для написания всех приложений, которые C# может писать, не так ли?

Спасибо.

ответ

4

В целом, я считаю, что вы должны иметь возможность делать практически все, что вы можете сделать на C#. Тем не менее, могут быть некоторые области, где C# упрощает вам работу - структура, безусловно, была разработана с учетом статически типизированных языков.

Один район, который делает поднять призрак LINQ. Я не знаю, поддерживает ли IronRuby напрямую деревья выражений. Конечно, вы могли бы создать их вручную, но это был бы довольно плохой опыт. Аналогично, я не знаю, что сделает IronRuby для определения соответствующих типов делегатов для LINQ для объектов и т. Д.

Не бойтесь изучать язык: это опыт, который может значительно расширить разум. Учитывая, что вам уже предстоит изучить платформу .NET, по крайней мере, в некоторой степени, вы можете также изучить язык, на котором написаны большинство примеров фреймворка. Если это достаточно большой проект, я подозреваю что в целом вы сэкономите время - и, конечно же, получите более широкие знания.

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

+0

А, это затруднительное положение. Для меня, когда я думаю об IronRuby и LINQ (предполагая, что нет прямой реализации деревьев выражений), моя непосредственная мысль: ну, строго нужно «писать все приложения, на которые может писать C#» (особенно в отношении LINQ to Objects , поскольку некоторые из конструкций всегда существовали в Ruby wrt. closures)? Но потом я спрашиваю себя: «В 2010 году, почему бы вам не воспользоваться LINQ, если бы вы использовали .NET?» :) –

+0

@Marc: Точно. В этом разница между «теоретически» и «практически» :) –

+0

LINQ не поддерживается в IronRuby, поскольку это C#/VB.NET DSL. В IronRuby вам придется вручную создавать деревья выражений, и, как сказал @Jon, это не было бы приятным опытом. –

2

Да, вы можете использовать IronRuby для записи приложений, но с Ruby поддержка и онлайн-сообщество не будут столь же зрелыми, как у C#. Таким образом, вам будет немного легче, если вы изучите C# и напишите приложения. Это мое личное мнение.

IronRuby - это еще один язык реализации, который Ruby имеет помимо C, Java и т. Д. Это не означает, что вы можете делать кодирование на C#. Вы будете кодировать только на языке Ruby, и вы сможете наслаждаться всеми своими плюсами и справляться с этим.

Итак, ответ на ваш вопрос: используете ли вы IronRuby или JRuby или (C) Ruby, это не имеет большого значения.

2

Я думаю, что вы действительно хотите, чтобы спросить здесь одна из двух вещей:

  • Могу ли я использовать IronRuby для взаимодействия с существующими .NET и библиотек .NET на основе, взаимодействуя как C# -Language программа будет?

    Да, ну, в основном. В основном разделе вы будете не иметь возможность напрямую обращаться к API-интерфейсам Win32 API напрямую, так как C# делает с P/Invoke. P/Invoke - это в основном C#, что FFI для Ruby. Если тебе это не все равно, отлично.

  • Могу ли я написать любой алгоритм/структуру/конструкцию/и т. Д. на языке Ruby, который я могу на языке C#?

    Это более буквальное толкование фактической формулировки вашего вопроса, но я не думаю, что это то, что вы хотели спросить, поскольку ответ более туманный, не попадая в довольно тяжелую теорию. Итак, мы просто скажем «обязательно».

+0

Ой, я не понимал, что IronRuby не поддерживает P/Invoke. Я полагаю, что было бы довольно легко написать оболочку C#, где это необходимо. –

1

Общий ответ на ваш вопрос: да, все, что вы можете сделать в C#, которое вы можете сделать в IronRuby и наоборот. Однако у каждого языка есть свои преимущества и недостатки ... например, Ruby обладает потрясающими возможностями метапрограммирования, о которых может только мечтать C#. С другой стороны, C# имеет LINQ.

Что касается сообщества, я не думаю, что есть большая разница. С IronRuby вы получаете сообщество Ruby и сообщество IronRuby. С C# вы получаете сообщество .NET и MSDN ...

Выбор языка программирования - это своего рода религиозный вопрос ... с чем вы бы пошли - христианство, иудаизм или ислам? только вы можете сказать ... :-)

Смежные вопросы