Видео ролики бесплатно онлайн

Смотреть русское с разговорами видео

Официальный сайт all-remont 24/7/365

Смотреть видео бесплатно

K-9 16.06.2010 19:11

CodingИзучаем Mono - Серия первая

Итак, поехали! Открываю цикл статей по Mono для полных чайников. Цикл будет "многосерийным", то есть состоять из кучи маленьких статей. Первая - пилотная, исправления и замечания приветствуются

Для работы нам понадобятся собственно Mono и любой удобный блокнот текстовый редактор.
В *buntu все нужное идет "из коробки", остальные качают из репов или собирают из исходников (скачать).

Для начала, напишем самую простую программу, которую можно придумать - Hello World.
Итак, создаем файл HelloWorld.cs и заполняем его следующим текстом:
using System;
namespace HelloWorld {
class HelloWorld {
public static int Main(params string
args)
{
Console.WriteLine("Hello, Mono World!");
return 0;
}
}
}

Ничего сложного тут не должно быть. Единственная оговорка: в каждой программе должен быть статический метод Main, с которого и начнется ее выполнение. Сейчас он просто выводит "Hello, Mono World!" на экран, после чего выходит (с кодом возврата 0).
Теперь скомпилируем нашу программу. Открываем терминал и вводим команду:
gmcs HelloWorld.cs

На выходе получаем файл HelloWorld.exe - это и есть наша программа, скомпилированная в CIL (Common Intermediate Language). CIL - язык, чем-то похожий на ассемблер, который выполняется Mono Runtime (или .NET Framework). Чтобы запустить программу, вводим:
./HelloWorld.exe

Hello, Mono World!

Итак, на сегодня все. Особо долго писать не могу, но постараюсь выпускать по серии раз в день-два.

В следующей серии:


Переменные
Управление процессом выполнения программы - простые вещи с длинным названием

P.S. Скриншоты будут по мере надобности (тут не вижу смысла), но если нужны, добавлю


Тэги:
+ 2 -
Похожие Поделиться

Zereal 16.06.2010 19:18 #
+ 2 -
спасибо :) но если не трудно и Вы в теме, хорошо бы увидеть статью про лицензионную чистоту Mono.
K-9 16.06.2010 19:21 #
+ 0 -
Абсолютно чисто. C# - открытый ISO стандарт, Microsoft там ничего не принадлежит (в Mono). Возможно, будут проблемы, если использовать сборки Microsoft (Windows Forms, например). Кстати, лучшее доказательство чистоты Mono - продолжительное партнерство Novell и Microsoft. А значит, взаимных претензий у них друг к другу нет
Zereal 16.06.2010 19:25 #
+ 0 -
То есть если они завтра поругаются, претензи могут найтись? я просто имела неосторожность в нашей конфе упомянуть banshee - сказали, что с лицензия там неладное.
K-9 16.06.2010 19:28 #
+ 0 -
Вообще, Novell утверждает, что все чисто. Что там внутри - другой вопрос...
cppmm 16.06.2010 19:43 #
+ 5 -
Вот тут и есть некоторая загвоздка. Дело в том, что C# как стандарт полностью свободен. А вот mono - это уже конкретная реализация и платформа. И некоторые из идей(а в США по сути разрешено патентовать идеи), использованных в процессе создания этой реализации частично пересекаются с аналогичными идеями в реализации .NET Framework. Именно тут теоритически и могут быть проблемы с патентами. Есть, конечно microsoft Promise, но это всего лишь обещание. Юридической силы оно не имеет. Именно поэтому сообщество настороженно относится к mono. Ну, я тоже, честно говоря.
K-9 16.06.2010 19:45 #
+ 0 -
Повторюсь: Novell утверждает, что все чисто. А что взбредет в голову запатентовать Microsoft - уже другое дело. Хотя язык свободный, так что я думаю, что Novell найдет, как выкрутиться, даже если будет суд.
K-9 16.06.2010 19:47 #
+ 0 -
Что маловероятно, т.к. Microsoft влом делать .NET для других платформ. А так есть теоретическая возможность портировать их софт под другие ОСи
Zereal 16.06.2010 19:46 #
+ 0 -
с moonlight та же картина? хм, зачем же тогда Икаса все время ходит по такой зыбкой почве, учитывая все это юридическое крючкотворство?
K-9 16.06.2010 19:51 #
+ 0 -
Майкрософт всегда может забить на моно и выкатить .NET под линукс. А моно засудить - от греха подальше. Вот Икаса и выкручивается, чтобы не пропало зря
cppmm 16.06.2010 19:54 #
+ 1 -
Отвечаю одновременно на все коменты по поводу позиции Novell.
Честно говоря, тут я, как и все остальные, могу только догадываться в чём реально загвоздка. Но была такая новость, что одним из пунктов соглашения Novell и Microsoft была защита пользователей Novell от патентных нападок со стороны мелкомягких. Это даже отдельно рекламировалось(именно тогда Балмер начал говорить о неких имеющихся патентованных технологиях в GNU/Linux, список которых он так и не привёл, кстати). Но со временем заглохло.
mealsforall 16.06.2010 21:48 #
+ 4 -
Давайте не будем моно продвигать в массы? Для кросс-платформенности есть питон и жава и прочие. А если вы будете писать под моно, мелокософт будет утверждать, что теперь виндовые приложения кроссплатформенны, в то время как они не будут таковыми (моно всегда отстает на два поколения от .NET). И юзеры, у которых программа на линуксе не запустится, будут думать, что это линукс кривой и переходить на винду.

Вот все тысячи аргументов против Моно:
http://techrights.org/2008/03/24/mono-danger-to-linux/
K-9 17.06.2010 07:27 #
+ -3 -
А давайте Вы останетесь при своем мнении и каждый решит сам?
Sugar 17.06.2010 09:49 #
+ 2 -
Понятное дело, что каждый останется при своем мнении. Но в то же время, каждый в праве его высказать. Вопрос в том - как. Человек написал то, что думает без лишних эмоций и троллинга, и это его право.
Вообще я тоже очень сдержанно отношусь к MS и к их технологиям, ладно, когда они еще что-то делают на винде для винды, меня это абсолютно не касается, но когда их вещи начинают пихать в линукс, то это уже как-то не так. Тем более да, мне не понятно зачем тратить столько усилий по впиливанию моно, когда есть масса готовых инструментов для разработчика (те же КуТи, Питоны, Жавы и т.д. и т.п.).
И да печальный опыт от MS уже есть, хотя бы взять GetTheFacts...
lockie 16.06.2010 19:37 #
+ 0 -
Пара вопросов.

> статичный метод
Здесь это имеет такое же значение, как и в сишке? Т.е. статичный символ - тот, который не определён за пределами своей единицы трансляции?

> HelloWorld.exe
А вот в каком формате этот файлик? PE? ELF? Или что-то родное?..

И да, в следующих частях хотелось бы прочитать о внутренностях создаваемого gmcs-ом приложения (что внутре, как запускается, как подцепляется к внешним библиотекам и т.д.) и поподробнее о сборках.
K-9 16.06.2010 19:38 #
+ -2 -
О внутренностях будет потом. Статичный - русский перевод static, как работает в чистом C - не знаю. Файлики в своем формате Common Intermediate Language.
K-9 16.06.2010 19:41 #
+ 0 -
Да, static - метод, который можно вызвать без создания экземпляра класса
deep 16.06.2010 20:14 #
+ 0 -
Статичные методы еще называют методами класса, а не его экземпляров (как то так).
K-9 16.06.2010 20:17 #
+ -1 -
А есть разница? Короче, суть:
class Class
{
public static void StaticThing() {}
public void Thing() {}
}
class AnotherClass
{
public void Works()
{
Class.StaticThing();
}
public void Fail()
{
Class.Thing()
}
public void AlsoWorks()
{
Class something = new Class();
something.Thing();
}
}
K-9 16.06.2010 20:18 #
+ -1 -
StaticThing работает без создания класс, Thing - нет
lockie 17.06.2010 00:05 #
+ 0 -
Понятно, спасибо :)
Username 16.06.2010 20:27 #
+ 0 -
K-9 16.06.2010 20:37 #
+ -1 -
Java не будет
inst 16.06.2010 22:23 #
+ 0 -
Где не будет? И почему?
mealsforall 16.06.2010 22:29 #
+ 0 -
Пока Андроид и Google AppEngine живы, Java будет.
И Питон тоже.
inst 16.06.2010 22:42 #
+ 0 -
Я не имею ничего против Java и даже хотел его изучить, но как-то всё больше мне попадается информации по C#... Не к добру это.
K-9 17.06.2010 07:24 #
+ -1 -
Слово пропустил =) имел в виду что статьи про джаву не будет
mhspace 16.06.2010 21:38 #
+ 1 -
Чё сказать-то хотел?
inst 16.06.2010 22:31 #
+ 1 -
Автор, безусловно продолжайте писать, если Вам это интересно. Хотя конечно можно было бы и рассказать хотя бы в первой статье немного о лицензионной чистоте (ведь первый же коммент к статье был на эту тему). Ну, и по ходу изложения <�будущих> статей упоминать про необходимость избегания Windows Forms и пр. я думаю будет не лишним.
K-9 17.06.2010 07:25 #
+ -1 -
Когда буду писать про гуй, тогда обязательно упомяну
Dagron 16.06.2010 23:16 #
+ 0 -
бр... какая читаемость)
ЗЫ можно в следующий раз по подробний, а то обещали для полных чайников и вдруг без обьяснений
вот что тут происходит я лично смутно понимаю
>>public static int Main(params string<> args)
K-9 17.06.2010 07:26 #
+ -1 -
Хорошо, постараюсь. Хотя это наверное больше уже ко второй серии
vvorth 17.06.2010 10:51 #
+ 1 -
Столько кода ради того чтобы вывести одну строку и вернуть код выхода? Ужас!
И таки да - моно как то не родно.
K-9 17.06.2010 11:48 #
+ -1 -
Вообще, все это пишет за тебя monodevelop ;)
vvorth 17.06.2010 12:01 #
+ 0 -
Я не к тому что писать много(хотя тоже), а в большей степени из-за потерь читаемости.
K-9 17.06.2010 12:06 #
+ 0 -
Вообще, дело привычки. Лично мне совсем не тяжело читать.
vvorth 17.06.2010 12:13 #
+ 0 -
Да-да, фломастеры =.)))

ЗЫ
Это я с точки зрения любителя python'а так "придираюсь".
K-9 17.06.2010 12:15 #
+ 0 -
Ну, на питоне тоже можно длинно и коряво писать =)
blackraven 17.06.2010 15:37 #
+ 1 -
Статичный и статический - таки разные термины. Методы/переменные обычно статические (во всяком случае, в большинстве переводных изданий).
Моно нужен кажется только Мужику с лора...
А для людей есть джава, с которой собственно С# слизан целиком и полностью.
K-9 17.06.2010 19:35 #
+ 0 -
Java очень выбивается из ДЕ. И мне кажется, что "статичный" подходит лучше, т.к. статическое у нас электричество
blackraven 17.06.2010 19:43 #
+ 1 -
Откуда-откуда ява выбивается?..
Вы эклипс, например, видели?

Хотя для меня ява все-таки больше серверная, а для клиента лично мне нравится C++/QT. Хотя QT поддерживала (не знаю, живо ли еще) Java-биндинги, и на них получаются очень даже красивые приложения (собственно, как и на QT).

И да, у явы уже как минимум с 1.5 есть нативные стили, чтобы никуда не выбиваться.

Насчет статичного - с точки зрения русского языка я согласен, но исторически сложилось, что переводчики используют слово "статический", поэтому я бы предпочел не вносить путаницы...
K-9 17.06.2010 19:47 #
+ 1 -
Ну, тролли на Jambi забили, так что не Qt. А насчет нативных стилей - к сожалению, ими мало кто пользуется =(
Статичный исправлю, наверное действительно лучше не путать людей...
Кстати, может потом и до Java руки дойдут =)
blackraven 18.06.2010 20:47 #
+ 0 -
А насчет нативных стилей - к сожалению, ими мало кто пользуется =(

Не согласен... Многие банковские приложения написаны на свингах, и вполне себе нативно выглядят. (я в банке работаю, да).
K-9 18.06.2010 20:49 #
+ 0 -
Надо еще потестить...

Смотреть онлайн бесплатно

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн