SQL Server Compact (практически аналог SQLite по функционалу и принципам работы) существует уже очень давно. Преимущество SQL Express именно в том, что функционально эта СУБД аналогична решениям энтерпрайз уровня. Ограничения там есть, но они не функциоальные, а на обьем базы и количество используемых ядер процессора.
Я не верю, что господин amarao, опытный администратор, судя по профайлу, не знает об этом — а значит он просто троллит.
Откровеенно говоря, я был лучшего мнения о вас, как о IT-специалисте. Сравнить SQL Express с SQLite — это фактически расписатся в полной собственной некомпетентности в сфере RDBMS.
Отличный пример того, почему не стоит сразу кидатся использовать неутвержденные стандарты.
Мы чуть менее года назад думали о том, чтобы использовать Web SQL Database в одном из проектов для поддержки офлайн режима. К счастью вовремя отказались от этой идеи и спустя некоторое время узнали, что проект стандарта спустили в унитаз.
Вы не учитываете динамики развития компании, которая находится в начале жизненного цикла. Возможно у владельцев есть основания думать, что через год она будет стоить не 6, а все 20 миллиардов.
А много вы знаете примеров действительно успешных гугловских сервисов, которые с нуля построили в компании, а не купили? Я навскидку могу вспомнить разве что поиск и почту. Зато есть примеры сервисов, начатых с нуля в компании, которые в итоге не взлетели. Из последних примеров — wave и buzz.
Между прочим, может вы уберете чекбокс «только для подписчиков блога»? Статья очень хороша, хотелось бы иметь возможность дать на нее ссылку знакомым, которые не зарегистрированы на Хабре. Да и Гугл ее тогда сможет найти.
Спасибо за отличную статью! Давно присматриваюсь к PostSharp и другим средствам AOP. Скажите, а сама сборка Mono.Cecil требует установленного mono на машине или совместима с обычным виндовым .Net Framework? 4 версия с DLR поддерживается?
Кстати, небольшой хинт: на Хабре есть специальный тег для подсветки кода — <source lang=«csharp»>...</source>, работает вот так:
Вас совершенно не беспокоят и не кажутся ужасными конструкции вроде списокДетей.Count, индекс.ToString() и List<Ученик>? Я уже молчу о том, что пока написал этот ужас, устал переключать раскладки.
C# поддерживает юникод в исходниках с самого рождения, то есть лет десять уже как. Другое дело — зачем это использовать? ИМХО, знание английского для разработчика необходимо примерно настолько же, насколько и знание базовых алгоритмов, структур данных и синтаксиса языка, на котором он пишет. Код, написанный с использованием кирилических идентификаторов выглядит ужасно:
<code class="csharp">public List<Ученик> СоздатьСписокУчеников(List<Ребенок> списокДетей) {
var cписокУчеников = new List<Ученик>();
for(int индекс = 0; индекс < списокДетей.Count; индекс++) {
if(списокДетей[индекс].Возраст > 7) {
cписокУчеников.Add(new Ученик {
Имя = списокДетей[индекс].Имя,
Фамилия = списокДетей[индекс].Фамилия,
СтроковыйИдентификатор = индекс.ToString()
});
}
}
return cписокУчеников;
}
</code>
Извините, но это ппц. Мне противно смотреть на такой код. Сравните с этим же кодом на английском:
А вы не пробовали ради интереса увеличить количество итераций раз так в 100? Это вполне может отфильтровать сайд-эффекты от того же JIT'a, которые возможно имеют место быть.
Аргументировать можете? Я не спорю, что возможно в среднем F# будет чуть-чуть медленнее (или быстрее), но если эта разница в пару процентов, то сами понимаете.
Естественно больше, но согласитесь, что аргумент «результирующие бинарники будут больше» звучит все таки менее драматично чем «F# тормозной, потому что генерирует не нативный код». К тому же последний как бы и не правда.
mono таки умеет компилится в нативный код со статически линковаными библиотеками. Я выше уже выложил ссылку на статью Мигеля двухлетней давности. Именно поэтому и возможны всякие MonoTouch'и, которые позволяют писать софт под те же айфоны, где никаких рантаймов моно никогда не было, нет и не будет.
Впрочем, наверное вы правы в том, что если уж писать софт для очень низкого уровня, то стоит выбирать для этого соответствующие инструменты.
В F# это делает JIT перед каждым запуском программы. Далее выполняется все тот же нативный код. И, кстати, никто не отменял утилиты вроде ngen. Так что мимо.
Я не верю, что господин amarao, опытный администратор, судя по профайлу, не знает об этом — а значит он просто троллит.
Мы чуть менее года назад думали о том, чтобы использовать Web SQL Database в одном из проектов для поддержки офлайн режима. К счастью вовремя отказались от этой идеи и спустя некоторое время узнали, что проект стандарта спустили в унитаз.
Кстати, небольшой хинт: на Хабре есть специальный тег для подсветки кода — <source lang=«csharp»>...</source>, работает вот так:
<code class="csharp">public List<Ученик> СоздатьСписокУчеников(List<Ребенок> списокДетей) { var cписокУчеников = new List<Ученик>(); for(int индекс = 0; индекс < списокДетей.Count; индекс++) { if(списокДетей[индекс].Возраст > 7) { cписокУчеников.Add(new Ученик { Имя = списокДетей[индекс].Имя, Фамилия = списокДетей[индекс].Фамилия, СтроковыйИдентификатор = индекс.ToString() }); } } return cписокУчеников; } </code>Извините, но это ппц. Мне противно смотреть на такой код. Сравните с этим же кодом на английском:
<code class="csharp">public List<Pupil> CreatePupilList(List<Child> childrenList) { var pupilList = new List<Pupil>(); for(int i= 0; i < childrenList.Count; i++) { if(childrenList[i].Age > 7) { pupilList.Add(new Pupil{ Name = childrenList[i].Name, Surname = childrenList[i].Surname, StringId = i.ToString() }); } } return pupilList; } </code>Какой проще читать?
А с этим что-нибуть пробовали?
Впрочем, наверное вы правы в том, что если уж писать софт для очень низкого уровня, то стоит выбирать для этого соответствующие инструменты.