Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/172: Рейтинг темы: голосов - 172, средняя оценка - 4.78
128 / 1 / 0
Регистрация: 14.10.2007
Сообщений: 122
1

С# под линукс

20.12.2007, 09:05. Просмотров 31923. Ответов 2
Метки нет (Все метки)


С# под линукс
Я знаю что есть mono C#.
А ета среда програмирования визуальна или нет?
На mono C# запустяться проекты каторые написаные на Microsoft Visual Studio 2005?
На Microsoft Visual Studio 2005 запустяться проекты каторые написаные на mono C#?
Скиньте скриншот mono C#?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2007, 09:05
Ответы с готовыми решениями:

Купить ноутбук под Линуксом или под вин-7 и добавить Линукс Минт?
Я звонил продавцам, пытая, что за Линукс установлен, в частности, в «Нотике», ничего...

C++ под линукс
Здравствуйте Все! я начинающий программист уже нормально умею написать консольные приложения на C++...

Ядро под линукс .
Зашел на оф.сайт http://kernel.org/ по ядру линукса и заметил что ядро весит 67 метро , Вопрос ,...

Драйвера под Линукс
Всем доброго времени суток! Хочу перейти на Линукс, но не могу найти драйвера под свой ноутбук. У...

2
Администратор
79843 / 48407 / 244
Регистрация: 10.04.2006
Сообщений: 13,125
20.12.2007, 10:52 2
http://www.mono-project.com/Screenshots

Mono — проект по созданию полноценного воплощения системы .NET на базе свободного программного обеспечения. Проект Mono возглавляет Мигель де Иказа, известный участием в проекте GNOME.

Mono включает компилятор языка C# — mcs, среду исполнения .NET — mono (с поддержкой JIT) и mint (без поддержки JIT), отладчик, а также ряд библиотек, включая реализацию ADO.NET и ASP.NET. В рамках проекта также разрабатываются привязки для графической системы GTK+ на платформу .NET.

Среда исполнения mono может исполнять модули, написанные на языках C#, Visual Basic .NET, Java, Boo, Nemerle, Python, JavaScript, PHP и Object Pascal (при наличии компилятора в среду .Net/Mono). Ожидается также поддержка языков C, Ada 2005 и Eiffel.

Принятая в проекте лицензия на компилятор и другие программы — GPL. Лицензия на среду исполнения и другие библиотеки — LGPL. Лицензия на библиотеки классов — X11 License.

Реализации Mono существуют для следующих операционных систем: GNU/Linux, Solaris, Mac OS X, Microsoft Windows и Unix.

Спонсор проекта Mono — фирма Novell.
MonoDevelop — свободная среда разработки, предназначенная для создания приложений C# и других языков .NET.

Изначально это был порт SharpDevelop на Mono/GTK+, но с того времени проект далеко ушел от своего начального состояния.

MonoDevelop является частью проекта Mono.
GTK+ (сокращение от GIMP Toolkit) — один из двух наиболее популярных на сегодняшний день наборов элементов интерфейса для X Window System, которая является его основной, но не единственной целевой платформой. Будучи изначально частью графического редактора GIMP, он «отпочковался» в отдельный проект и приобрёл заметную популярность. GTK+ — свободное ПО, распространяемое на условиях GNU LGPL, и является частью проекта GNU.
2
Администратор
79843 / 48407 / 244
Регистрация: 10.04.2006
Сообщений: 13,125
20.12.2007, 10:53 3
Лучший ответ Сообщение было отмечено как решение

Решение

Проект Mono

В настоящее время в рамках этого проекта реализованы два стандарта: язык программирования C# (Стандарт ECMA-334) и Инфраструктура Обобщенного Языка Программирования (CLI) (Стандарт ECMA-335). Обе спецификации были разработаны в корпорации Microsoft и представлены ECMA (Европейская Ассоциация Производителей Компьютеров) в октябре 2000 года. Формальное одобрение было получено в декабре 2001 года и эти предложения, возможно, станут стандартами ISO (благодаря соглашению о согласовании работы ["fast-track"], существующему между ISO и ECMA) ближе к концу следующего года.

Проект Mono спонсируется компанией Ximian, той самой, которая дала нам графический рабочий стол GNOME. Лидер проекта -- мексиканский программист, главный технический директор Ximian - Мигель де Иказа (Miguel de Icaza). На мой взгляд разработчики, привлеченные к работе над проектом Mono, в очень короткое время проделали огромный объем работ. Между прочим, слово "Mono", в переводе с испанского, означает "обезьяна". А ребят из Ximian обезьяниичать учить не надо!
Привет, мир Mono!

Попробуем на примере простой программы разобраться в том, как взаимодействуют между собой различные компоненты Mono и языка C#. Перед тем как приступить к изучению, необходимо установить Mono у себя на компьютере (информацию об установке Mono вы найдете в разделе Ссылки).

На диаграмме, приведенной ниже, показан путь, который проходит программа на языке C# от компиляции до исполнения:
Compiling and running C# programs.

Для начала рассмотрим простую программу на языке C# (классический "Привет мир"). Создайте в любом текстовом редакторе файл со следующим содержимым:

class Hello {
public static void Main() {
System.Console.WriteLine("Hello Mono World!");
}
}

и сохраните его с именем hello.cs.

Программа состоит из класса Hello, который содержит метод Main. Этот метод представляет собой точку входа в программу, фактически то же самое, что и функция main в программах на языке C/C++. В этом примере метод Main выдает на стандартный вывод строку "Hello Mono World". (мне это напоминает java и совсем не напоминает C/C++, но в мире C# об этом говорить не принято? -- прим. ред.)

Теперь скомпилируем программу компилятором C# (называется он mcs), выполнив такую команду:

mcs hello.cs

В результате работы компилятора - в текущем каталоге должен появиться файл hello.exe. Пусть вас не сбивает с тольку расширение .exe файла. Это не исполняемый файл системы Windows, во всяком случае - расширение не определяет способ пользования файлом. В отличие от компиляторов C/C++, компилятор C# не создает машинный код. Создаваемый им двоичный файл - сборка, содержит метаданные и инструкции на промежуточном, платформо-независимом языке (intermediate language (IL)). Это означает, что при запуске такой программы, она должна пройти этап дополнительной трансляции кода из промежуточного языка в машинные инструкции того процессора, на котором исполняется программа. Эта последняя стадия трансляции выполняется виртуальной машиной, которая определяется Инфраструктурой Обобщенного Языка Программирования (Common Language Infrastructure - CLI). CLI определяет объектно-ориентированную среду времени исполнения, поддерживающую базовую библиотеку классов, динамическую подгрузку и связывание классов, многопоточное исполнение, трансляцию "на лету" и механизмы автоматического управления памятью. В реализации спецификации от Microsoft - CLI обычно называется как Common Language Runtime - Среда Выполнения для Обобщенного Языка Программирования (CLR). Можно смело утверждать, что CLR является надмножеством для CLI, поскольку она содержит некоторые расширения, не являющиеся частью CLI.

Чтобы запустить наш скомпилированный пример необходимо воспользоваться программой mono, которая представляет собой виртуальную машину Mono. В результате выполнения следующей команды:

mono hello.exe

На стандартный вывод (окно терминала и т.п.) будет выведена строка:

Hello Mono World!

За кулисами

А теперь давайте "заглянем" внутрь скомпилированного файла - сборки. Программа monodis (Mono дизассемблер) выводит содержимое сборки в текстовом представлении. Введите следующую команду:

monodis hello.exe

Дизассемблер должен вывести нечто подобное:

.assembly extern mscorlib
{
.ver 0:0:0:0
}
.assembly 'hello'
{
.hash algorithm 0x00008004
.ver 0:0:0:0
}
.class private auto ansi beforefieldinit Hello
extends [mscorlib]System.Object
{

// method line 1
.method public hidebysig specialname rtspecialname
instance default void .ctor() cil managed
{
// Method begins at RVA 0x20ec
// Code size 7 (0x7)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void valuetype [corlib]System.Object::.ctor()
IL_0006: ret
} // end of method instance default void .ctor()

// method line 2
.method public static
default void Main() cil managed
{
// Method begins at RVA 0x20f4
.entrypoint
// Code size 11 (0xb)
.maxstack 8
IL_0000: ldstr "Hello Mono World!"
IL_0005: call void class [corlib]System.Console::WriteLine(string)
IL_000a: ret
} // end of method default void Main()

} // end of type Hello

В первом разделе находятся метаданные. Они содержат текущую версию программы, дополнительные ограничения по безопасности, информацию о локали и список внешних сборок, используемых данной сборкой. Все остальное - это код на промежуточном языке (IL). Здесь можно видеть два метода:

1. Конструктор класса по-умолчанию - .ctor, который создается компилятором автоматически.
2. Наш метод Main.

Как уже говорилось ранее, виртуальная машина использует JIT-компилятор (just-in-time - "на лету") для трансляции кода на промежуточном языке (IL) в машииный код. Трансляция производится только тогда, когда в этом возникает необходимость (отсюда и название "на лету" - just-in time). В нашем случае, для метода Main генерируется следующий машинный код (синтаксис языка ассемблера AT&T):

push %ebp
mov %esp,%ebp
sub $0x30,%esp
push $0x80c9eb0
mov 0x805462c,%eax
push %eax
cmpl $0x0,(%eax)
mov (%eax),%eax
call *0x94(%eax)
add $0x8,%esp
mov 0x805462c,%eax
push %eax
cmpl $0x0,(%eax)
mov (%eax),%eax
call *0xb4(%eax)
add $0x4,%esp
leave
ret

Кроме того, в состав Mono входит интерпретатор mint. Эта программа, вместо JIT-компиляции выполняет интерпретецию инструкций промежуточного языка (IL). Если говорить о скорости выполнения, то для нашего конкретного примера интерпретатор mint дает несколько более высокую скорость исполнения, поскольку не тратится время на компиляцию и размещение скомпилированного кода в памяти. Конечно же, машинный код, уже размещенный в памяти, выполняется намного быстрее чем интерпретация IL. В настоящее время JIT-компилятор Mono существует только для платформы x86. На других платформах следует использовать интерпретатор. Чтобы увидеть результат работы интерпретатора, выполните следующую команду:

mint hello.exe

Если вы хорошо знакомы с Java, то вы обнаружите, что эти технологии в значительной степени схожи. И это действительно так. Виртуальная машина является ключевым фактором в достижении независимости от аппаратной платформы. Это означает, что я могу написать и скомпилировать программу под Linux, используя Mono, а затем запустить ее под Windows с установленной .NET Framework. И при этом не потребуется переписывать или перекомпилировать исходный код. Однако, в противовес виртуальной машине Java, прочно привязанной к одному языку программирования, спецификация CLI (Инфраструктура Обобщенного Языка Программирования) провозглашает не только независимость от аппаратной платформы, но и независимость от языка программирования! Под Windows имеется целый ряд языков программирования, нацеленных на CLR (Среда Выполнения для Обобщенного Языка Программирования). Наиболее важные, являющиеся частью среды разработки Microsoft Visual Studio .NET: Visual Basic .NET, JScript .NET, Managed C++ и C#. Среди других языков программирования от сторонних производителей, поддерживающих новую технологию .NET, можно назвать APL, COBOL, Eiffel, Forth, Fortran, Haskell, Mercury, Mondrian, Oberon, Pascal, Perl, Python, RPG, Scheme и SmallScript. Что касается проекта Mono, то на сегодняшний день в нем существует единственный язык программирования - это C#, но, вероятно в ближайшем будущем, мы увидим поддержку и других языков программирования.

Другая немаловажная часть CLI - это Common Type System - Общая Система Типов (CTS). CTS дает полное описание всех типов данных, поддерживаемых виртуальной машиной, включая порядок их взаимодействия и формат представления в области метаданных сборки. Важен тот факт, что не все языки программирования, следующие спецификации CLI, поддерживают полный список типов данных из CTS. Поэтому существует еще Common Language Specification - Спецификация Обобщенного Языка Ппрограммирования (CLS), определяющая минимальный набор типов, которые должны поддерживаться всеми языками программирования, следующими спецификации CLI. Это означает, что если мы создали класс, который использует только те качесва, которые доступны в CLS, то его можно будет использовать в программах на любом другом CLI-совместимом языке программирования. Вы можете написать реализацию класса на Eiffel, наследника на C# и использовать его в пограмме на Visual Basic.NET. Теперь такая совместимость стала реальностью.
О преимуществах

Используя платформу CLI, такую как Mono или .NET, вы приобретаете ряд очень важных преимуществ:

* Программы могут быть запущены на любом типе процессора, под управлением любой операционной системы, поддерживающей платформу CLI, без необходимости перекомпиляции.
* Полная интеграция нескольких языков программирования.
* Система поддерживает важные меры безопасности.
* Единая среда исполнения, разделяемая всеми CLI-совместимыми языками программирования.
* Непротиворечивая объектная модель, используемая всеми CLI языками, включая стандартный API, предлагаемый единственной базовой библиотекой классов. Изучив API - вы можете использовать его в любом языке программирования, поддерживаемом платформой.
* Упрощенная модель установки приложений. Отпадает необходимость регистрации модуля в системном реестре.
* Несколько версий одной и той же библиотеки (DLL) могут гармонично сосуществовать на одном компьютере

Кроме того, язык программирования C# дает еще ряд важных преимуществ:

* Появление новых конструкций, таких как свойства, события и аттрибуты, заметно упрощает построение программных компонент.
* Отпадает необходимость в отдельных заголовочных файлах языка описания интерфейсов (IDL).
* Упрощен механизм контроля версий.
* Унифицированная система безопасных типов. Все типы данных (включая простые типы) порождены от единственного базового класса.
* Автоматическое управление памятью, с помощью сборщика "мусора".
* Тесная интеграция в CLI.
8
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.12.2007, 10:53

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Шахматы под Линукс
Могу выложить код шахмат под Линукс. Играют двое игроков, один против другого, не против...

Библиотека под линукс
Здравствуйте. Скажите,пожалуйста, как обычную программу на с++ в qt под linux превратить в...

Игра под Линукс
Привет всем. Нужна помощь: необходимо импортировать некий *.blend файл (со всеми моделями,...

заставка под линукс
привет ) Есть такая проблема. Как мне написать код ? Нужно сделать простейшую заставку на Qt,ну...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.