Отправляет email-рассылки с помощью сервиса Sendsay

Ресурсы сети InDev

  Все выпуски  

Ресурсы сети InDev


Служба Рассылок Subscribe.Ru проекта Citycat.Ru


Ресурсы сети lnDev No. 4

Добрый день, уважаемые подписчики. Этот долгожданный выпуск ни что иное, как анонсированный еще во втором номере материал. Напомню, речь идет о языке программирования C#, платформе Microsoft Visual Studio .Net. Для тех, кто не читал номер 2а приведу ссылку на архив http://indev.virtualave.net/cgi-bin/use.pl?content=ml/ml2a.htm. Для тех кто читал - ссылка дальше. Кроме того вы можете посмотреть этот и все предыдущие номера в архиве рассылки на Subscribe.Ru http://subscribe.ru/archive/comp.soft.prog.indev.
Сайт Ресурсы сети InDev - http://indev.virtualave.net.
Приятоного чтения.

C#
Итак, я продолжаю серию статей, посвященных Visual Studio.Net. Как вы уже догадались, прочитав название, во второй статье из этого цикла я собираюсь поведать вам об одной из глобальных новинок в данном продукте, о том самом новом языке программирования от Microsoft C#. Я не буду пересказывать вам содержание пресс-релизов, если есть желание, то вы можете их легко найти на www.microsoft.com, я же опишу вам то, что я увидел в действительности и как это работает.

Скрестили ужа с ежом...
Для начала небольшое введение. Что же собственно такое этот C#? Совершеннейший винегрет, доложу я вам. За основу взят C++, по крайней мере синтаксис на 100%, тут они ничего изобретать не стали. Хотя изобрели ли они что-нибудь новенькое вообще, это еще вопрос. IHMO, это напоминает мне модную сейчас тенденцию к спасению мира программирования путем создания совершенного языка на основе десятка других (синтаксис из одного, набор стандартных библиотек из другого, поддержка ООП из третьего, etc.), вспомните Perl, PHP, Delphi, Java, Eiffel и т.д. Но что-то я отвлекся. Да, так о C#. Основные языковые конструкции тоже взяты напрямик из C++. Да вы не удивляйтесь. А чего вы ожидали? Вы на название посмотрите :) Из плюсов взято очень многое, родственник все же. Правда кое что на этапе эволюции/наследования отмерло, как чуждый этому миру атавизм. Не все с этим согласны, но что поделаешь: Кое что видо изменилось. Так, например, объявления классов и их членов являет собой некий симбиоз из C++ и Java. Далее. Как в Java, здесь все должно содержаться в классах, то есть даже хрестоматийная Hello World имеет один класс. Сразу бросаются в глаза первые строчки программы "using System;". Ничего не напоминает? А вы где учились? Я еще верю, что вы как и я из идейных соображений не пишите на Delphi, но в школе-то вам Паскаль давали. Нет? Ну и ладно, пусть это останется на совести ваших учителей, вы не много потеряли. Так вот для тех кто не в курсе, это чистой воды инициализация стандартных библиотек в Паскале (по крайней мере в Борландовском варианте). Да, нету в C# ни хедеров, ни библиотек. Есть куча DLL файлов, которые мы можем использовать в своих прогах на C# (и не только, но об этом в других статьях) для работы с файлами, сетью, строками и т.д. и т.п. Так вот это их подключение, повторюсь в стиле Паскаль. Ну вроде бы, если говорить именно о языке, не вдаваясь в подробности техники программирования на нем, то это наверное все, что я могу о нем сказать. Перейдем к более детальному рассмотрению этого шедевра человеческого гения.

Как же все это выглядит в жизни
Сразу хочу оговориться, что все, что я буду писать далее в этой статье - есть всего лишь IMHO и ничего более.
     Ау! Где Вы любители Delphi и Visual Basic'а!? То что я сейчас буду рассказывать, скорее всего будет интересно Вам (ну а если и не очень интересно, то по крайней мере можете вдоволь поглумиться, над тем, во что можно превратить хваленый C++ :)
     Итак, что мы имеем? Идеальный инструмент для любителей пописать в стиле FoxPro/Delphi/VB, да не обидятся на меня представители данной группы. По большому счету написание программы сводится к напихиванию в форму бешенного количества компонентов, редактированию их свойств, и в тех редких случаях, когда "гад-разработчик" компонента не позаботился о том, чтобы компонент умел делать _все_ сам, приходиться написать пару строчек кода, отвечающего за кое-какие его действия и взаимодействие с другими компонентами.
     Все происходит по классической схеме подобных сред программирования. Каждый компонент, имеет ряд свойств, изменение которых приводит к изменению поведения и внешнего вида объекта. Естетсственно, что у каждого компонента, представляющего собой элемент UI, есть свойство Text, изменение которого влечет за собой немедленное обновление содержимого компонента, представленного на экране (привет и слава PutProperty/GetProperty). Эх, где те золотые времена, когда все под винды писалось на Visual C++ и Borland C++, когда для написания программ требовалось понимание внутренней структуры и процессов, происходящих в них: С приходом описываемых в данной статье средств разработки потерялись те идиомы и принципы написания виндовых приложений. Такое понятие как оптимизация, трюки с Win32 API и прочие вещи уходят в небытие: Мда, но прошу прощение за невольное лирическое отступление, да C#, точно я пишу о C#... Вся эта система строится на WinForms с соответствуюей спецификой и прибамбасими. Нет (или я их не нашел) файлов ресурсов. Когда вы добавляете элементы UI в форму, то wizard добавляет соответствующий код в инициализирующую функцию. Выглядит это примерно так:

button1.Location = new System.Drawing.Point (32, 80);
button1.Size = new System.Drawing.Size (192, 80);
button1.TabIndex = 0;
button1.Text = "button1";

Ну и дальнейшая работа со свем этим делом мало чем отличается от всех упомянутых выше родственных систем.
     Далее. Сам язык представляет из себя одну большую ориентацию на COM/COM+. Реализация компонентов на нем выглядит проще, чем "Hello World!" в C++. А их уж использование, тем более стандартных, встроенных в систему, вообще сродни использованию стандартных языковых конструкций в любом языке.
     Можно создавать консольные приложения, GUI приложения на основе Win Forms, библиотеки компонентов, компоненты, сервисы Windows и туча разнообразных типов проектов для Web. Последний факт не является удивительным. Все система .Net ориентирована на Web (я думаю об этом можно догадаться их названия). C# не является исключением, он и создавался-то в расчете на интегрирование его (полноценного языка, родственника, ооочень близкого родственника (по сравнению с ним, все же javascript и Java являються троюродными шуриными по прабабушкиной линии) в Web.
     В общем и целом, для написания простеньких программок "на скорую руку" он подойдет, на мой взгляд. Я не отрицаю, что найдется немалое количество людей, которым он придется по душе и они будут его использовать в своей ежедневной работе. Но, IMHO, это зависит от нескольких вещей:

  • привычка;
  • склад ума и стиль программирования;
  • и естественно решаемые задачи;

Я свой выбор сделал. Я остаюсь с C++ (хотя повторюсь, что иногда для разнообразных вспомогательных целей, C# вполне может мне пригодиться). Тем более, что одно из основных отличительных способностей C# - интеграция в COM/COM+ есть теперь (начиная VS.Net :) и в С++, но об этом в одной из следующих статей. Что выберете вы - дело ваше.
     На этом я хотел бы закончить этот ультра короткий обзорчик. Я надеюсь, что он даст вам общую картину о C#, и подстегнет заинтересовавшихся залезть в MSDN или интернет, для более подробного изучения.

В качестве рекламной компании...
Итак, "Microsoft Pictures" is proud to present Whistler Classes!
     Да, напоследок хотелось бы сделать небольшой анонс будущей статьи и заодно взять немного работы Microsoft по расхваливанию их нового продукта на себя. Леди и джентельмены! Встречайте, классы Whistler'а (aka Windows XP):

  • Win32_ActiveRoute
  • Win32_CollectionStatistics
  • Win32_ComputerShutdownEvent
  • Win32_ConnectionShare
  • Win32_DfsLink
  • Win32_DfsLinkReplica
  • Win32_DfsReplica
  • Win32_DiskQuota
  • Win32_IP4PersistedRouteTable
  • Win32_IP4RouteTable
  • Win32_IP4RouteTableEvent
  • Win32_JobObjectEvent
  • Win32_LUID
  • Win32_LUIDandAttribute
  • Win32_ModuleLoadTrace
  • Win32_ModuleTrace
  • Win32_NamedJobObject
  • Win32_NamedJobObjectActgInfo
  • Win32_NamedJobObjectLimit
  • Win32_NamedJobObjectLimitSetting
  • Win32_NamedJobObjectProcess
  • Win32_NamedJobObjectSecLimit
  • Win32_NamedJobObjectSecLimitSetting
  • Win32_NamedJobObjectStatistics
  • Win32_PingStatus
  • Win32_ProcessStartTrace
  • Win32_ProcessStopTrace
  • Win32_ProcessTrace
  • Win32_QuotaSettings
  • Win32_ServerConnection
  • Win32_ServerSession
  • Win32_SessionConnection
  • Win32_SIDandAttribute
  • Win32_SystemTrace
  • Win32_ThreadStartTrace
  • Win32_ThreadStopTrace
  • Win32_ThreadTrace
  • Win32_TokenGroups
  • Win32_TokenPrivileges
  • Win32_VolumeQuotaSetting

И это еще не полный список : Это только классы относящиеся к разделу "Operating System", а есть еще:

  • Computer System Hardware classes
    • Cooling device classes
    • Input device classes
    • Mass storage classes
    • Motherboard, controller, and port classes
    • Networking device classes
    • Power classes
    • Printing classes
    • Telephony classes
    • Video and monitor classes
  • WMI Service Management Classes
    • WMI configuration classes
    • WMI management classes
  • Installed Applications Classes

Это набор классов, ориентированных преимущественно на использование в VB и C#. Но как вы понимаете - это компоненты COM (а скорее всего COM+, к сожалению исчерпывающе подробной документацией я не обладаю), а следовательно их использование не ограничено. Как вы могли убедиться прочитав список, эти классы позволяют работать практически со всем, что может пригодиться в нелегкой работе системного программиста.
     Но, пожалуй, на сегодня хватит. Следите за нашими выпусками... Увидимся!


Best wishes,
Pentagra.

Как соавтор присоединяюсь к пожеланию,
KOYOT.

Авторские права охраняются. Перепечатка данного материала
или его части в любом виде разрешена только с указанием
авторства InDev и ссылки на сайт Ресурсы сети InDev




 

http://subscribe.ru/
E-mail: ask@subscribe.ru

В избранное