Теоретически говоря, я могу использовать IronRuby для написания всех приложений, которые может написать c #, верно?

#.net #ruby #ironruby

#.net #ruby #ironruby

Вопрос:

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

Спасибо.

Ответ №1:

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

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

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

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

Комментарии:

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

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

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

4. @Shay: Полные выражения запроса — это VB / C # DSL, но если бы IronRuby поддерживал деревья выражений и методы расширения с каким-нибудь хитрым способом вывода типов, это дало бы много преимуществ LINQ. Однако в основе своей это технология статической типизации…

5. Кстати, в Ruby есть нечто похожее на LINQ to Objects, это делается с помощью методов map и select — смотрите здесь: benjaminbooth.com/tableorbooth/2006/12/ruby_arrays_sel.html

Ответ №2:

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

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

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

Ответ №3:

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

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

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

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

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

Комментарии:

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

Ответ №4:

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

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

Выбор языка программирования — это своего рода религиозный вопрос… что бы вы выбрали — христианство, иудаизм или ислам? только вы можете сказать … 🙂