Weaver

Wednesday, 26 August 2009 08:36
skiminok: (Default)
Итак, вчера Embarcadero RAD Studio 2010 (Weaver) всё-таки релизнулся.
Свои впечатления, наверное, выскажу подробно и обстоятельно (как всегда) после некоторого опыта работы с триалом. Ждите.

правонарушителям )
skiminok: (Compas)
Через несколько дней запощу полную информацию с проходящей сейчас в Сан-Хосе конференции "Delphi Live 2009". Команда Embarcadero ещё не выложила все доклады и обзоры в сеть, но те посты, что появляются в блогах Delphifeeds уже сейчас, будоражат голову.

Вкратце: нам обещают нативную IDE под Windows вплоть до 7, Mac OS X и Linux. Консольный хелловорлд для Мака якобы демонстрировался прямо на конференции.
Походу дело ещё довольно не близкое. Явно не в следующей версии.

В компиляторе: поддержка 64бит, поддержка многоядерности, атрибуты в стиле .NET, фичи по мелочи.

Параллельная RTL.
Улучшения в VCL. Работа с природными средствами ввода: жесты, тачскрин, GPS и т.д. (на будущее)
Абсолютно новая модель RTTI, идентичная рефлексии в .NET/Java. Полное покрытие.

Переработанная и улучшенная IDE, больше ориентированная на работу с клавой. Удобный ToolsAPI для IDE и создания форматировщиков кода. Новый дизайнер форм. Куча изменений по мелочи.

Демонстрация Delphi Prism с фреймворком Cirrus (аспектно-ориентированное программирование), работающей в альфе Visual Studio 2010.

Интеграция SVN, поддержка Firebird, нативное взаимодействие с дотнет-кодом через некий .NET Proxy, SOAP 1.2, DataSnap c HTTP, интеграция средств Embarcadero для работы с БД в IDE.

Документация.
skiminok: (Default)
Я долго думал, с какой статьи начать перевод. Потом, вспомнив, что в основном моя агитация направлена на Дельфистов, принял решение проводить все описания в плане "Delphi for Win32 vs. Delphi Prism", а уже когда материал подобного рода иссякнет, заняться взглядами под другим углом.
Вот в каком порядке переводить раздел Delphi Prism Language, была проблема уже нешуточная. В конце концов, посоветовавшись с товарищами, я решил идти более-менее по логическому порядку, но писать всё-таки не учебник по программированию, а считать, что читают статью люди, имеющие опыт в данной отрасли. Проще говоря, это будет всё тот же "Delphi for Win32 vs. Delphi Prism", упорядоченный от простейших материалов к интереснейшим :-)

Прежде всего стоит сделать важное замечание. Delphi Prism - .NET-язык, то есть полностью CLR-совместимый. Это значит, что любое изменение и любая мелочь языка должны быть построены в строгом соответствии со стандартом M$ - иначе программа даже просто не скомпилируется. Поэтому, когда я буду говорить о проведённых изменениях, очень многие из них я смогу мотивировать только одной фразой: потому что .NET. Это касается и имён конструкторов, и целочисленного деления, и ещё кучки разных тонкостей, каждую из которых попытались или включить в опции совместимости (как с конструкторами), или обыграть так, чтобы для программиста ничего не поменялось, а компилятор сам проводил преобразования в корректный IL (как с границами массивов - в .NET они начинаются с 0, но в Delphi Prism реализовали, конечно же, привычный нам свободный вариант... но об этом в соответствующем месте), или попросту много раз громко сакцентировать внимание на переделке (как с целочисленным делением). По ходу статьи вы встретите следующие пометки:

..., потому что .NET. — особенно краткое оправдание для некоторых изменений.
Несовместимо! — акцент на кардинальных нововведениях.
Совместимо:) — далее следует инструкция по включению обратной совместимости для описываемого пункта.

Вообще говоря, в 99% случаев все синтаксические проблемы по переходу решаются с помощью Oxidizer.

1. Пространства имён.

Начать следует с нескольких концепций .NET. *Ох, чует моё сердце, за время написания цикла статей по Призме я этих концепций расскажу на пол-МСДН, так что даже первый раз увидевшие платформу в глаза смогут свободно писать на ней тяжеловезные фреймворки сразу после изучения основ синтаксиса произвольного языка) Но, может, это и к лучшему. ОК, поехали.*

Понятия "файл" для программиста не существует. Файлы - это сущность чисто физическая, о ней вспоминаешь, когда сохраняешь проект на жёстком диске, а программа должна работать с сущностями разработки, с контекстом и задачей приложения. Поэтому разбиения на модули нет. Есть разбиение на пространства имён (ПИ). Пространство имён распространяется на несколько файлов, имеет название, ключевое слово namespace заменило собою ключевое слово unit, с той лишь разницей, что его название может повторяться в нескольких файлах - тогда это одно и то же ПИ.
Совместимо:) - ключевое слово unit осталось как синоним для namespace.

Delphi Prism полностью поддерживает циклические ссылки, в отличие от Delphi for Win32. То есть приведённый ниже код скомпилируется без проблем:
namespace FirstOne;
interface
uses SecondOne;

type
  TClass1 = class
  private
    C1: Class2;
  end;
//...
implementation
end.

namespace SecondOne;
interface
uses FirstOne;

type
  Class2 = class(Class1)
  end;
//...
implementation
end.
Это возможно благодаря многопроходному компилятору (компилятор Delphi, как известно, - однопроходный). Коджировцы утверждают, что компилятор Призмы, несмотря на многопроходность, не заимствовал фольклорных проблем С++ и потери в скорости не ощущаются - из-за отсутствия понятия "заголовочный файл". Что же, посмотрим на практике.

Название ПИ можно опустить:
namespace;
interface
implementation
end.
В таком случае описанные в нём объекты станут глобальными для всей сборки. Тем не менее, такой приём не рекомендуется.

Даже если вы не указали используемое ПИ в секции uses, то доступ к его элементам всегда можно получить, полностью прописав путь к элементу прямо в коде:
var
  PS: System.Drawing.Printing.PaperSource;
Или:
if PS.Kind = System.Drawing.Printing.PaperSourceKind.Upper then //...
Если же прописали, то, понятное дело, выстраивать эти достойные фантазии гигантомана конструкции нет необходимости:)

Структуру проекта принято разделять на иерархию вложенных ПИ, чтобы получалось нечто вроде namespace System.Text.RegularExpressions. Чтобы использовать сразу все вложенные в какое-то пространство ПИ, можно воспользоваться конструкцией ".*":
uses System.Xml.*;


Кстати говоря: если вы добавляете использование одних и тех же ПИ в каждое пространство вашего проекта, возможно, лучше будет сделать это глобально с помощью "Project Options" в IDE.

2. Главный метод.
Как только что выяснилось в ходе разговора о пространствах имён, понятия "программа" (program) у CLR не существует. Встаёт логичный вопрос: что же тогда служит точкой входа для сборки? Где искать начало выполнения? Ответ: в главном методе.

Несовместимо!
Главный метод имеет имя Main и служит той точкой, с которой начинается выполнение любой программы, будь она консольной, визуальной, или Веб-сервисом (исключение DLL, которая, вообще говоря, не выполняется). Такой метод должен быть хотя бы у одного класса в вашем пространстве имён; если он найден только у одного класса, выполнение автоматически начнётся с данного Main`a, в противном же случае выбирается тот класс, который указан в Project Options.

Главный метод обязательно статичен, то есть, в терминологии Delphi, представляет собою метод класса (class method). Он может не принимать параметров вообще, иметь один строковый параметр либо иметь один параметр - динамический массив строк. В последних двух случаях Main`у передаются аргументы командной строки.

Главный метод может либо не возвращать значения, либо возвращать целое число - код выхода программы.

Ниже привожу (вернее - честно слямзиваю с Prism Wiki) пример главного метода некоей программы:
class method Program.Main(Args: array of String): Integer;
begin
  if Length(Args) <> 1 then begin
    Console.WriteLine('Filename expected!');
    exit 1;
  end;
  RunWith(Args[0]);
  exit 0;
end;
Здесь, чтобы пояснить небольшой кусочек кода, придётся забежать вперёд и сразу рассказать о нескольких мелочных нововведениях:
  • Ключевое слово method означает то, что и означает - любой метод:-) Это функция или процедура, в терминах старого доброго Паскаля... и Делфи, конечно же. Метод может возвращать значение, а может и не возвращать - в этом его преимущество, меняя функцию на процедуру, вам приходилось заодно изменять и ключевое слово в её описании и реализации. Сейчас это неудобство не нужно. Да и термин ООП "метод" лучше объясняет суть явления, чем пришельцы из 70-х "процедура" и "функция".
    Совместимо:) Никто не заставляет писать method, старый синтаксис procedure и function остался в целях совместимости и убран никогда не будет.
  • Ключевое слово exit - дубликат return из языков с Си-подобным синтаксисом. Немедленный выход из метода с возвращением указанного значения соответствующего типа. Или невозвращением - в случае метода-процедуры.
    Несовместимо! Exit у Delphi Prism - ключевое слово языка с соответствующим синтаксисом. Функция Exit() с одним необязательным параметром из Delphi for Win32 2009 осталась в прошлом.
  • Метод WriteLine() класса Console, как нетрудно догадаться, выполняет функции процедуры WriteLn. Впрочем, это уже относится не к Призме, а чисто к FCL, так что лучше MSDN вам никто ничего не объяснит. Тем более что она теперь русская.
В принципе, с этими замечаниями действия, которые выполняет написанный выше Main, становятся очевидными: проверить, передан ли программе ровно один параметр, только тогда начать выполнение основной логики, в противном случае вывести на консоль сообщение об ошибки и вернуть возмущённый код выхода.

3. Переменные.
Небольшое отступление от логики. Вообще говоря, повторюсь, если бы это был учебник по программированию на Delphi Prism для начинающих, то я бы пошёл как установлено временем: идентификаторы, выражения, константы, простейшие операторы... а только потом уже такая сложнейшая по своему наполнению область, как использование переменных. Но поскольку статью читают (надеюсь, читают) далеко не нубы, то я перескочу сразу к более интересному материалу, а ценные сведения об основах упомяну тогда, когда они срочно понадобятся по ходу рассказа.

Совместимо:) Переменные в Призме объявляются стандартной конструкцией var. Другое дело что теперь эта конструкция свободно гуляет по всему вашему коду. В отличие от Delphi for Win32, в Призме объявление переменных доступно не только в описательной секции метода, но и в любой точке его кода. Старый принцип Бейсика и Си: где понадобилось - там и объявляйте. Любить этот принцип или нет, использовать или забыть как страшный сон - решать только вам.
method DoSomething;
var
  someInt1, someInt2: Integer;
  someFloat: Double := 0.5;
begin
  //немного кода
  var someBoolean: Boolean;
  //и ещё немного кода
  var AnswerToLifeTheUniverseAndEverything: Integer := 42;
end;

Несовместимо! Обратите внимание: начальная инициализация переменных происходит не символом "=", а оператором присваивания ":=". По мнению разработчиков Delphi Prism, такой синтаксис корректнее иллюстрирует суть процесса: присваивание стартового значения переменной (полю, свойству... да мало ли), а не статическое, постоянное равенство. Это же вам не константа.

Инициализация переменных одновременно с объявлением - возможность, доступная для любого типа данных. Вот вам создание объекта:
method DeclareTwoFiles;
var
  File1: System.IO.FileStream := new FileStream('c:\file1.txt', FileMode.Append, FileAccess.Write, FileShare.Write);
begin
  var File2: System.IO.FileStream := new FileStream('c:\file2.txt', FileMode.Append, FileAccess.Write, FileShare.Write);
end;
Да, господа, это вызов конструктора. Вот во что он превратился. Конструкторы в Призме безымянные, вернее сказать, их имя совпадает с именем класса, потому что .NET. Но я дарю вам опять волю к жизни и ставлю яркую пометочку Совместимо:) - возможность использованния конструкторов вида .Create включается в Project Options, в настройках обратной совместимости. Но об этом - в своё время, ещё дойдёт у нас речь до конструкторов.

Delphi Prism, будучи дотнет-языком, активно использует автоматическое распознавание типов, более известное как Type Inference:
var x := %101;
var s := 'Hello';
var c := new System.UTF8Encoding(true);
Здесь переменная x сама по себе получит тип Byte (как наименьший из возможных), переменная s - тип string, а c - UTF8Encoding. К сожалению, в настоящий момент это работает только для локальных переменных, - но в том числе и для объявленных "по месту".
(Кстати, вы заметили "%101"? Это просто пятёрка. В двоичной системе счисления, что указано соответствующим префиксом. Да и старый знакомый префикс "$" для шестнадцатеричной тоже никуда не делся.)

Любой идентификатор может быть зарезервированным стандартным словом, если не забывать везде ставить перед ним символ "&":
var &End: Boolean;
Более того, когда идентификатор, как название члена, следует после точки, амперсанд и тот можно опустить - компилятор Призмы понимает, что здесь может быть только пользовательское название, но никак не ключевое слово языка.

Что-то статья получилась о ерунде всякой. Пожалуй, на третью часть надо пустить что-нибудь действительно покрасивей: паралелльные циклы, там... или асинхронное выполнение. Или про обнуляемые типы можно поговорить. Посмотрим через пару дней.
skiminok: (Default)
Блистательно и, как всегда, взбудораживающе прошёл перед нашими глазами счастливый, седьмой PDC - Professional Developer's Conference от Microsoft. Это событие, регулярно созываемое крупнейшим софтверным гигантом мира раз в 1-3 года, всегда приносило неожиданные новости, открывало завораживающие планы и демонстрировало потрясающие возможности. За годы существования PDC Лос-Анджелесский выставочный центр (а на первых порах - Сан-Франциско, Сан-Диего и Орландо) повидали первые публичные релизы Win32 API, платформы Windows NT, среды разработки Visual Studio, технологии .NET 1.0, 2.0, 3.0, языка C#, ОС Windows XP, интерактивного средства управления Microsoft Surface, платформы Windows Azure (тема 2008 года) и множества прочих ошеломляющих инноваций. Но в 2008 году ребята из Embarcadero решили на три дня чуток изменить традицию и акцентировать внимание разработчиков со всего мира не только на новых достижениях Редмонда. А ещё и на новом шаге в мире дотнета. Шаге, который воплотит и объединит в единую команду массы девелоперов, которые ранее были вынуждены разойтись по враждующим лагерям. Итак, "Delphi flash mob" на седьмом PDC в Лос-Анджелесе принёс нам объявление о совершенном новом программном продукте - Delphi Prism.

1. Delphi Prism и все-все-все.

Все знают о Delphi.NET. Этому продукту, впервые появившемуся перед нашими глазами в Delphi 8, сулили просто грандиозное будущее. В самом деле: тогда, в 2001-2003 годах, платформа .NET только-только появилась, представляла собой очень и очень перспективную разработку и с каждым годом захватывала в свои ряды всё больше и больше поклонников из мира Software Developing.
Delphi не осталась в стороне. Сначала в Borland, а затем и в CodeGear, люди начали ставить на нового лидера разработки, и всецело ориентировать свои продукты на .NET. В принципе, стоит признать наперёд, что в темпах популярности они не ошиблись... вот только сами оказались не на высоте. Но это произойдёт потом, а пока компания с жаром и пылом принялась за продвижение языка программирования нового класса.
За несколько лет обозначились основные проблемы Delphi.NET, впервые чётко сформулированные уже в 2007-2008 во времена Embarcadero:

  1. Менеджеры компании упорно пытались сохранить Delphi.NET полную или практически полную совместимость на уровне синтаксиса со своим старшим братом - Delphi for Win32. Учитывая, что разработка нативной версии продвигалась в Коджире на порядок медленнее, чем развитие майкрософтовцами CLR, на уровне темпов ребята явно терпели неудачу.
  2. Не во всех областях получалось организовать полнофункциональный визуальный редактор интерфейса - M$ закрыла эту возможность.
  3. Многие программисты невзлюбили новую оболочку CodeGear RAD Studio. Кто-то утверждал о багах, кто-то - производительности... в любом случае, пересадить огромную толпу потенциальных потребителей на новый язык оказалось невозможным, пока он используется именно в данной среде.
  4. На самом деле и Delphi for Win32 с одной стороны, и C# с другой в массе специфичных задач оказывались на порядок выгоднее Delphi.NET.
Просто продукт оказался прекрасно задуман, но как часто это бывает, криворуко и косомозго реализован. И это отобрало у Delphi.NET всю потенциальную перспективность.

Проблему заметили в Embarcadero, и поняли, что вопрос надо решать срочно и по возможности кардинально. Сообщество требовало мощного прорыва, такого же, который подкрепил бы триумф нативной Delphi 2009: Tiburon, и довершил бы эффектный прыжок среди программистского населения. Но для прорыва нужны были помощники.
Ими стали RemObjects. Старая, довольно известная на просторах комьюнити фирма, давным-давно зарекомендовавшая себя на рынке разработкой PascalScript, AnyDAC, Data Abstract... и Chrome. Позднее более известный как Oxygene. Язык с Pascal-подобным синтаксисом, наряду с Обероном и Модулой продолжающий последние заветы Вирта - но дотнетовский. Т.е. Oxygene поставлялся как расширение к Microsoft Visual Studio - компилятор, интерпретатор и т.д. нового .NET-языка. Oxygene стал известен лишь в узких кругах, не так много компаний перешло на него, несмотря на богатый функционал. Вообще говоря, проект многие считали чем-то вроде научно-исследовательской разработки RemObjects - на уровне "чисто поржать", что ли.
Пока к RemObjects не обратилась Embarcadero. Две компании объединили усилия и за каких-то полгода на основе разработок Oxygene и Delphi родили принципиально новый продукт с грандиозным функционалом и собственной, радужной судьбой. Это новое лицо Oxygene, подсоленное известностью имени Delphi, назвали Delphi Prism.

2. Сапожник, портной... кто ты будешь такой?

Ключевые пункты в описании Delphi Prism:

  • Delphi Prism - расширение к Visual Studio. Оно работает в оболочке Visual Studio Shell, бесплатно предоставляемой M$ для разработчиков собственных дотнет-языков. Если на Вашем компьютере установлена Visual Studio (не Express версия), то Призма автоматически при установке интегрируется в неё. В противном же случае вышеупомянутая оболочка будет автоматически установлена Призмой и вы сможете запускать её автономно, получая аналогичную полнофункциональную среду программирования - без необходимости отдельной покупки VS.
    Также Delphi Prism доступна в составе CodeGear RAD Studio 2009.
  • Delphi Prism полностью соответствует последнему стандарту .NET и даже опережает его (о последнем см. ниже). Вы можете разрабатывать приложения под ASP.NET, Silverlight, Windows Presentation Foundation (WPF), WinForms, LINQ. Гарантируется, что Призма всегда будет оставаться как минимум в ногу с развитием M$.
    Есть возможность выбирать версию .NET, под которую будет ориентировать приложение.
  • Так как Delphi Prism - полностью совместим с CLR, то он поддерживает любую реализацию дотнета, которая соответствует спецификации Майкрософт. В частности, на данный момент Призма прекрасно работает под Mono на Linux (GTK#) и Mac OS (Cocoa#). Разумеется, никто не запрещает также использовать на всех трёх платформах WinForms наряду с GTK# и Cocoa# - все упомянутые возможности разработки поставляются "из коробки".
    Более того, сейчас в стадии бета-версии находится также процесс интеграции Prism в среду MonoDevelop, вместо VS.
  • Привычный синтаксис, знакомый нам по Delphi, позволяет легко перейти с языка на язык, а изобилие новых синтаксических возможностей в нём - стимулирует переход с удвоенной силой ;-)
    Кстати говоря, продукт RemObjects Hydra позволяет использовать в одном проекте одновременно Delphi Prism и Delphi for Win32, интегрируя их друг с другом.
  • Стоит отметить, что привычная для выбравших в своё время Delphi.NET библиотека VCL.NET более развиваться не будет. WinForms, GTK#, Cocoa# содержат всё необходимое для полноценной визуальной разработки.
    Что же касается огромного количества элементов Delphi RTL, которые портировать будет чуть более трудоёмко, то этот вопрос в настоящий момент решается с помощью ShineOn - авторской реализации Delphi RTL исключительно на .NET FCL. ShineOn тоже ещё не вошёл в финальную стадию, однако количество уже переведённого кода впечатляет.
  • В ближайшие месяцы, согласно Нику Ходжесу, CodeGear выпустит в народ сразу несколько функциональных обновлений для Призмы. Роадмапа ещё нет, он обещается на DN в ближайшем будущем, а пока что всем рекомендуется запастись Software Accurance.
  • Первый trial появился для свободной закачки на сайте CodeGear позавчера.
Практически всё описание Delphi Prism доступно сейчас на Prism Wiki. Вики, как мы знаем, никогда не бывает законченной энциклопедией, поэтому я не могу сказать, что эта документация когда-либо станет полной и окончательной. Оффлайн-документация к Delphi Prism, поставляемая с продуктом - эта сама Вики. Имхо, подобный формат не станет уродливей или неудобней при необходимости заглядывать в справку.
Вики в основном наполнена на английском языке. Часть материала успешно переведена на немецкий, часть - на французский, и часть - на японский языки. В силу того что большего количества информации про Призму нет более ни на одном ресурсе Интернета, мой небольшой цикл статей про уникальные возможности языка (да-да, уникальные, как по сравнению с Делфи, так и по сравнению с C#!) без лишнего оригинальничанья будет представлять собой в основном перевод справочной вики Призмы на русский язык. Не дословно, конечно же. С авторскими комментариями. Но любителей изучать всё в первоисточниках сразу лучше отошлю на Prism Wiki и Delphifeeds.com - здесь вы не найдёте ничего, кроме агрегатора этих двух ресурсов.

Итак, общее описание продукта закончено. Пора приступать к конкретике. А именно - к возможностям языка...
skiminok: (Default)
26-й день с момента последней записи в блог. Пожалуй, пора бы уж что-нибудь и наваять.

С каааким же трудом я набрал эту строчку, вы себе не представляете. Вообще, последние полмесяца жизни можно ознаменовать одним-единственным звуком: "Хррр..." Сплю, короче. То ли устаю сильно, то ли организм себе надорвал, то ли просто погода такая, не знаю. Но спать хочется дико, постоянно, каждую минуту, и от этого сплошные проблемы.

Вот позавчера выложил в народ бета-версию ТСЗ 2.2.9. Наконец-то оно уже более-менее прилично функционирует для объявления бетой, а не внутренним недоделанным билдом. Угу. Сразу же почувствовал себя Линусом Торвальдсом.
Я был настолько уверен, что все получится, что даже сделал скачок в нумерации версий. В марте 1992 года я планировал выпустить версию 0.13. А вместо этого, получив графический интерфейс пользователя, уверился, что мы на 95% достигли цели -- выпуска полноценной, надежной операционной системы, пригодной к тому же для работы в сети. И поэтому выпустил версию 0.95.
Господи, как же это было преждевременно! Чтобы не сказать, глупо.
...................................................................................................................
Из-за своего чрезмерного оптимизма при выпуске версии 0.95 я оказался в ловушке. В течение тех двух лет, что ушли на разработку и выпуск версии 1.0, с номерами творилось что-то невообразимое. Между 95 и 100 не так много чисел, но мы продолжали постоянно выпускать новые версии -- то ошибку поправишь, то функцию добавишь. Добравшись до 0.99, мы были вынуждены начать добавлять номера, чтобы указать на уровень заплат, а потом перешли на алфавит. В какой-то момент мы выпустили версию 0.99, уровень заплаток 15А. Потом появилась версия 0.99, уровень заплаток 15В и так далее. Так мы добрались до уровня заплаток 15Z. А вместо уровня 16 была выпущена версия 1.0 - в этот момент система наконец стала работоспособной. В марте 1994-го Linux 1.0 была с большой помпой представлена в аудитории факультета информатики Университета Хельсинки.
Л. Торвальдс, "Just for fun. Записки нечаянного революционера".

В общем, уже вчера у меня накопилось исправлений багов аккурат на 2.2.91. Сейчас в TODO валяется ещё десяток зафиксированных неполадок, которые тянут на 2.2.92 - и опять как можно быстрее, в ближайшие дни. Если так пойдёт и дальше, то мне придётся пойти по вышеупомянутому пути и выпустить финальную версию примерно к Новому Году... сразу после 2.2.999AFG build 25403...

Из-за сонного состояния мне катастрофически не хватает времени. Из-за катастрофической нехватки времени я уже которую неделю не могу закончить давно планируемый пост про Delphi Prism. Ах, господа, какая же это превосходная штука... Я просто влюбился:) в Призму впервые, как только увидел первый её пресс-релиз с описанием. А когда наткнулся в Сети на бета-версию Prism Wiki, то и просто застрял на долгие часы. Пожалуй, цикл статеек описания я всё-таки выдам. Только по материалам этой Вики - там его хватит с головой. Эх, скорей бы Новый Год... скорее бы Призма...

Решили впервые попробовать свои силы в PM'стве. Первый курс, да. Собрали компанию старых друзей. Зарегистрировались в олимпиаде по управлению проектами. Несколько дней сонно думали над идеями, кучу откинули, в итоге сгенерировали, раскрутили и описали идею в последний день и за 8 часов сварганили полную презентацию проекта со всеми подробностями и комментариями. В итоге - 9.5 баллов из 10 и первое место в заочном туре, среди многих, в том числе гораздо более опытных команд. Коллективный мозг называется:) Завтра очный тур, посмотрим, что из этого может получиться...

А ещё к нам вчера Opera приезжала. Организовала классную презентацию с рассказом о перспективах стандартов, о возможностях HTML5, SVG, Ajax-технологий и прочего вебдваноля. Большинству аудитории было интересно, но некоторые, плохо понимающие инглиш, а также несведущие в веб-программировании откровенно спали, и проснулись только к последней фазе - заданию вопросов и раздаче подарков. Вопросы, кстати, с подвохом, и мне понравилась парочка ответов - с подколками на тему M$, Google, Mozilla... особенно запомнился такой перл:
- А как вы относитесь к Google Chrome?
- Ну, начну с того, что мы невероятно благодарны Google за то, что они выпустили собственный браузер. После появления на свет Google Chrome количество загрузок Оперы возросло в несколько раз :)))

Ладно, на этом данный пост я, пожалуй, прекращу. Догадайтесь почему? Правильно, потому что дико устал его писать. А так как спать мне сейчас нельзя, через час топать на встречу с ученичками, то придётся просто брать волю в кулак и как минимум заканчивать строчить нудные посты. Потому что сон навевают, ауауауаааах......

Profile

skiminok: (Default)
skiminok

Most Popular Tags

July 2011

S M T W T F S
     12
3456789
10111213141516
17181920212223
242526272829 30
31      

Syndicate

RSS Atom