Должны ли C # и Java включать синтаксис друг друга? - PullRequest
1 голос
/ 30 января 2009

Я перепрыгнул с C # на Java очень много, и «различия» между ними немного раздражают.

Можно ли написать набор расширений / плагинов, которые бы объединяли синтаксис двух языков.

Я говорю о добавлении поддержки IDE или использовании языковых конструкций, например:

  1. одинаково относиться к этим двум строкам:

    System.out.println("Blah");

    Console.out.writeline("Blah");

  2. Автоматически замечайте, что при вводе s tring вы имеете в виду S tring

  3. Распознавание общих вызовов API и их перевод в фоновом режиме.

Конечная цель заключается в том, чтобы иметь возможность написать программу на Java / C # и выбрать во время компиляции, какую ВМ / среду выполнения вы нацеливаете.

Если бы вы могли сделать это, было бы хорошей идеей?

Если нет, то почему?

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

Я видел код, который будет переводить проект C # на Java, и я предполагаю, что, возможно, есть обратное, то, что я предлагаю, это золотая середина, поэтому мы все можем просто "ладить".

Ответы [ 8 ]

17 голосов
/ 30 января 2009

Нет, абсолютно нет. Конечно, не в самих языках (как подразумевается в названии), а желательно (IMO), а не в IDE (как это требуется в теле).

Это разные языки. Идиомы и условности немного отличаются. Я не хочу, чтобы думал на Java, когда я пишу на C # или наоборот. Я считаю, что разработчикам следует активно поощрять разделять их мышление. Переключение между ними не слишком сложно, но этот переключатель должен присутствовать, ИМО.

2 голосов
/ 30 января 2009

Хотя я полностью согласен с Джоном Скитом, если вам нужно это, почему бы не создать свою собственную библиотеку Java API, чтобы вы могли создать пространство имен System.out с вызовом метода printLn, который вызывает Console.Writeline ()?

Это приближает тебя к тому, что ты хочешь.

1 голос
/ 30 января 2009

Просто потому, что в Java и C # используется один и тот же синтаксис, вам нужно обойти это и думать с точки зрения Java Platform и .NET Platform. Эти два понятия совершенно разные, поэтому мой ответ определенно нет.

0 голосов
/ 30 января 2009

На самом деле в начале не было дотнетов - майкрософт был за java. Однако они приступили к изменению java способами, несовместимыми со стандартом java plstform. Перефразируя солнце подал в суд на майкрософт и выиграл суд. После этого MS приступил к созданию dotnet и, в частности, c #, который стал платформой VM для Microsoft. Конечно, по пути изменилась целая куча вещей. Microsoft представила много вещей, которые мешали работе Javas в любом месте и т. Д. Они сделали то же самое с dotnet, из-за чего у моно-команды возникли проблемы с тем, чтобы они могли верно переопределить все для других платформ, не являющихся Windows.

• Строка против строки. • имена методов в нижнем регистре (java) v имена методов в верхнем регистре (dotnet). • Предоставление Java-ключевым словам новых имен - «пакет».

В конце концов, dotnet получил ответ от Microsoft, чтобы они могли контролировать платформу и делать свое дело, а не следовать стандарту

0 голосов
/ 30 января 2009

Во-первых, вы описываете не разницу в синтаксисе языка, а различия в библиотеках классов. Оба языка относительно просты с точки зрения ключевых слов и функций, но понимание или знание библиотек и того, как они работают, требует значительного изучения.

Описываемые вами ошибки - это вещи, которые разработчик не должен делать с самого начала - в среде IDE не следует догадываться. Будет много случаев, когда вы не можете легко / тривиально переводить между Java или DotNet. В конце концов, опытный разработчик узнает и знает, когда и какие библиотеки классов использовать.

0 голосов
/ 30 января 2009

Visual Studio на самом деле поставляется с конвертером Java в C #, который пытается выполнить некоторые вещи, о которых вы упомянули. К сожалению, это ни к чему не приводит (1) для чего-либо, кроме простого приложения hello world.

Несмотря на внешнее сходство, между Java и C # существует много существенных различий, поэтому вы бы очень мало достигли, выполнив то, что вы предлагаете imo.

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

0 голосов
/ 30 января 2009

Я думаю, что нет. Я также переключаюсь с Java на C #. Но если синтаксис идентичен, это означает, что кто-то должен пытаться скомпилировать c # в компиляторе Java, или наоборот.

0 голосов
/ 30 января 2009

На самом деле уже есть язык Java для .NET Framework, разработанный Microsoft: J #

Таким образом, вы получаете java-синтаксис, но все еще разрабатываете .NET Framework.

Но я никому не рекомендую его использовать. Я знал Java раньше, чем знал C #, поэтому я попробовал J #, потому что думал, что это будет более простой переход. Сначала мне это нравилось, но после того, как я попробовал C #, я больше никогда не вернусь. Прежде всего, никто не использует J #, поэтому довольно сложно найти примеры и учебные пособия. Во-вторых, C # имеет (IMO) гораздо более удобный синтаксис, особенно для событий, свойств, лямбды, анонимных методов и многих других вещей, он также время от времени обновляется с еще большим количеством синтаксического сахара, который, как я думаю, не является J #.

Возможно, если вы часто пишете на Java, а иногда пишете приложение .net, это может быть хорошим вариантом.

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