Sunday, May 19, 2013

ППКС

Эдсгер Дейкстра: “Приходится признать, что главная задача компьютерной науки — «не запутать все до неузнаваемости» — так и не была достигнута. Увы, большинство наших систем слишком сложны, чтобы не тревожиться об их состоянии, они слишком хаотичны и запутанны, чтобы с ними можно было чувствовать себя уверенно и спокойно”.

Никлаус Вирт: “Лет 25 тому назад интерактивный текстовый редактор мог быть спроектирован из расчета всего лишь 8000 байт памяти — современные редакторы текстов программ требуют в 100 с лишним раз больше. Операционная система должна была обслуживать 8000 байт, а компилятор умещаться в 32 Кбайт, в то время как их нынешние потомки требуют для своей работы многих мегабайтов. И что же, это раздутое программное обеспечение стало быстрее и эффективнее? Наоборот. Если бы не аппаратура с ее возросшей в тысячи раз производительностью, современные программные средства было бы просто невозможно использовать… Характерной чертой компьютерной индустрии является тот факт, что поставщик, которому удалось первым выбросить продукт на рынок, как правило, получает ощутимые преимущества над конкурентом, чей аналогичный — и лучший по качеству! — продукт появляется вторым. Тенденция принимать первый появившийся продукт в качестве 'de facto'-стандарта — крайне прискорбный феномен, вызванный к жизни все той же спешкой.
...В действительности беды программной инженерии происходят вовсе не из-за отсутствия инструментов или хорошего менеджмента, а от недостатка технической компетентности. Хороший проектировщик должен опираться на опыт, на строгое логическое мышление и на педантичную точность. Никакая чудесная магия не может помочь. В свете всего этого особенно грустно, что во многих университетских программах по информатике «программированием в большом» (programming in the large) пренебрегают. Проектирование не заняло надлежащего места в программах по подготовке специалистов. Как результат, программная инженерия превратилась в эльдорадо для хакеров. Программировать без царя в голове стало условием профессионального выживания: чем более хаотичной выглядит программа, тем меньше опасность, что кто-то возьмет на себя труд проинспектировать этот код и развенчать как саму программу, так и ее автора”.

Ларри Уолл: “Такое ощущение, что компьютерная наука ищет некую панацею, которая позволит людям писать корректные программы, даже не думая. На самом деле нам необходимо научить людей думать правильно. И именно здесь компьютерная культура оказывается несостоятельной. Мы забыли о важности фонетических методов изучения компьютерных языков”.

Деннис Цикритзис (автор бестселлеров по операционным системам): “Множество программистов не являются экспертами. Большинство программ не имеют четко определенной среды, в которой они должны работать, или четко определенных спецификаций, определяющих, что же они должны делать”.

Бьёрн Страуструп: “Всё новое гораздо чаще, чем нам хотелось бы, напоминает хорошо забытое старое. Заметьте, Кобол, Фортран и Си по-прежнему остаются ведущими языками”.

Tuesday, May 14, 2013

Linux Mint 14, "Nadia"

The newest Linux Mint 14, nicknamed Nadia, uses the fine Cinnamon desktop. Based on the Gnome 3 libraries it is equipped with a hierarchical start menu and all the ergonomic features that the new Gnome Shell is missing. Simplicity rules!

Generally all desktops except Unity from Ubuntu and the new Gnome Shell are usable. Just these two main ones are going strange ways. It is hard to understand that the developers behind them are still trying to ignore all the criticism that comes back from users.

I liked it. It is fast and there is nothing superfluous. Seems to be the best news from the world of Linux for me for a long time.

Saturday, May 11, 2013

The nature of me

"For every word I’ve written, five have been discarded. Such is the nature of writing. For every ten programs I’ve downloaded, tried, and tested, nine have been discarded. Such is the nature of software."
(c) Steven Goodwin

For every line of code I’ve written, too many lines have been discarded. Such is the nature of me :)

Thursday, May 9, 2013

Visual Studio 2012 Pro cannot build your solution because of XAML

You have a large enough project (in my case it is about 2 Gigabytes of sources, libs etc. etc. oh, yeah, baby... although it results in just 33 Mb 'release' executable) written in XAML/C++ for Windows 8 Metro. Suddenly from some point you cannot build it. There are errors in Output something like:
"The specified module could not be found. (Exception from HRESULT: 0x8007007E) your_path\your_project\FuckingPage.xaml 18 13 YourSolution",
"Cannot create instance of type 'YourSolution.Common.YourClass' your_path\your_project\FuckingPage.xaml 30 25 YourSolution" etc.

If this is a case, don't rush to dive into debugger or even figure out what's going wrong. Most likely there is not your mistake at all. Just close before the compilation all opened tabs containing fuckin' XAML files.

Nice, isn't? :)

C structures and memory consumption

Hack to death on your nose: when you declare a structure in C, the bigger data types must go at first. For example:
struct S {
    long double ld;
    char *p; // can be 8 bytes on x64    
    double d;
    float f;
    int i;
    char c;    
} *p;
But not:
struct S {
    char c;
    int i; 
    float f;
    double d;
    char *p;  
    long double ld;
} *p;
I guess the same rule is valid not only for C.

Monday, May 6, 2013

Bit Twiddling

int conditional(int x, int y, int z) {
    return x ? y : x;
}

int conditional(int x, int y, int z) {
    return ((y&(!x+~0))|(z&~(!x+~0)));
}
WARNING: latter is worse not only because it is unreadable, but it also results the worst assembler code (at least in case of the modern compilers). So be careful by using such shit which you can find in some "clever" books and articles :)

Как я провёл лето

Как я провёл "длинные" майские выходные в 2013 году. Надоело писать не по-русски :)

Мда-с. Давненько не брал в руки GDB, Valgrind etc. и не хакал дизассемблированный код. Ощущения непередаваемые, жаль только, что это всё в выходные вместо отдыха. Ну, пара новых прочтенных на аглицком книжек (одна - по Аде, вторая - по компиляторам) да три-четыре статьи - почти не в счёт. Выходные удались, в общем. Хотя домашние меня, кажется, уже тихо ненавидят :(

Планы на следующие "длинные" выходные: примерно такие же, но с упором на Фортран.

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