Showing posts with label programming. Show all posts
Showing posts with label programming. Show all posts

Monday, July 25, 2016

American pragmatism was an attack on European metaphysics on the grounds of impracticality. American culture was obsessed with the practical and contemptuous of the metaphysical. The computer and computer language are the perfect manifestations of the pragmatic notion of reason. Every line of code must have a practical consequence. Functionality is the only standard. That a line of code could be appreciated not for its use but for its intrinsic beauty is inconceivable. The idea of pragmatism, as it has evolved into languages like C++, is a radical simplification and contraction of the sphere of reason. Reason now deals only with some things, all of which are measured by their practical consequences. Everything that lacks practical consequence is excluded from the sphere of reason and sent to another, inferior sphere. In other words, American culture does not deal easily with the true and beautiful. It values getting things done and not worrying too much about why whatever thing you are doing is important. [...] Computing culture [...] constitutes not reason contemplating its complexity, but reason reducing itself to its simplest expression and justifying itself through practical achievement.

© 2009 George Friedman, "The Next 100 Years: A Forecast for the 21st Century"


Tuesday, May 24, 2016

One more piece of shit discovered

Unfortunately I've discovered the one more shit "tool" that can ruin your code in 1 minute —F... JADE. And yes, I hate all tabulation dependent languages, so fuck all these Python, Ruby, Stylus, CoffeeScript etc. CoffeeScript btw is probably the most unreasonable shit invention. These days every fucking jerk invents his own "programming language" and hundreds of other nerds are applauding - "wow! cool! its great! because... its NEW" :)

Sunday, May 8, 2016

fucking MASTERPIECE garbage collectors I ever seen :)

1.
while(1) free(rand());


2.
typedef unsigned long long ull;
for( ull i = 0; i < std::numeric_limits<ull>::max(); ++i )
{
    free( (void*)i );
}

Sunday, May 17, 2015

C vs Python

The same algorythm on the same input data solves the same task in 3.5 sec coded in Python, in 0.22 sec coded in Cython, but in 0.08 sec coded in C99 and compiled with an old good GCC ;) No extra libraries - just some math with final print(f).

Tuesday, April 21, 2015

Послушница Параскева!

Ричард Столлман да пребудет с тобой и да утешит тебя в скорбях. Пишешь, что чуть в отчаяние не впала от программирования на чистом С. Линус Торвальдс да хранит тебя от этого. Надо не унывать, а скорее смиряться и мануалы читать. И хорошо, что созналась наконец и смирилась. Это и компилятору любезно, и душе твоей полезно.

А как отчаешься, что, мол, опять нужно все велосипеды да костыли вручную писать и ничего-то, дескать, кроме стэка да кучи у тебя нету, то вознеси молитву фон Нойману. И не искушайся бесовской приязнью system(), но с тщанием сотвори execvp() опосля fork(). Да твори сие с превеликой осторожностью, дабы бесы не проникли сквозь твой execl() да не сделали stack overflow или ещё какую гадость, им свойственную. И о тех великомучениках вспомни, кто вообще на ассемблере рассчёты траекторий да орбит писали: им-то потяжелее твоего бывало, но не стонали, ан видишь - спутники нонче редко падают.

Если когда на мысль придет, что у других код лучше, то эту мысль надо отгонять и не верить ей. Плакать себя не принуждай, а делай code review со вниманием и с чувством, что ты грешна во всем пред фон Нойманом. А если слезы сами пойдут, то можно поплакать. Только в офисе, при людях, не следует плакать.

А ежели совсем тяжко станет тебе на низком уровне твоём, то не медли, но вознеси молитовку к Ангелу-Хранителю твоему: "Операционныя Системе Юниксе, хранителю мой святый, на соблюдение мне от фон Ноймана с небесех данный. Остави мне весь говнокод мой сегодняшний, вольный или невольный, якоже и я оставляю коллегам. Ты мя днесь просвети, от всякаго переполнения буфера сохрани, ко благой оптимизации настави и на путь безбажия направи. И охрани мя от зла своими системными командами, аминь."

Здоровье твое да укрепит Apple iMac с дисплеем Retina 5K.

Да хранят тебя Керниган и Ричи от козней Биллов Геев со Стивами Жопсами лукавыми.

Мир тебе и благословение от Intel.

Friday, June 27, 2014

Real Russian Perl

#!/usr/blin/perl
while(true) {
    ++$i--;
}

How to redirect JavaScript console.log() to Xcode's debug output

On iOS >= 7.0 it is pretty easy thanks to brilliant (and undocumented as well) framework:
@import JavaScriptCore;

...

// get UIWebView's JavaScript context
JSContext *ctx = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

// 'listen' to console.log()
ctx[@"console"][@"log"] = ^(NSString *message) { 
    NSLog(@"Javascript's console.log() :\n%@\n\n", message); 
};

Monday, December 16, 2013

SPOJ THINKBIT

Well, I always got "compilation error" or "wrong answer" in THIS.
Here are my solutions that works OK on my local machine but NOT on the SPOJ!
return 2 | !(!(x >> 1)); // I like this one!
// but they don't wanna bit shifts!
return 2 | !(!((x & 2) | (x & 4) | (x & 8) | (x & 16) | (x & 32) | (x & 64) | 
(x & 128) | (x & 256) | (x & 512) | (x & 1024) | (x & 2048) | (x & 4096))); 
// kinda idiotic, but works :)
return 2 | !(!(x & 1073741822)); // OK on 64-bit UNIX
return 2 | !(!(x & 65534)); // 32-bit? here it is...
return 2 | !(!(x & 4094)); // WTF?! this gives "wrong answer" on this f... SPOJ !

Whats wrong with SPOJ guys?

SPOJ THINK

Strange Pattern (Easy)
return 3-(x%2)/x; // OK!
return -!(x-1)+3; //gives a "compilation error" ;)

Tuesday, October 15, 2013

Linking Storyboards

Very "elegant" solution to resolve "We have one storyboard at all" iOS programmers group nightmare.
Yes, I'm making fun :)

Monday, October 7, 2013

Monday, July 1, 2013

Good tools that help me in my work

After writing this angry post I just have to mention really good tools and their eminent authors.

1. VIM

2. Midnight Commander

3. Firebug

4. Microsoft Visual Studio

5. ReSharper

6. XCode

7. Sublime Text

8. Bitbucket (and thanks for Git, Linus!)

9. WireShark

10. Parse

 

To be continued.

Saturday, June 8, 2013

New fashionable shit that hinders me in my work

Actually I even don't know why these "tools" exist (the only reason seems: to make a life harder). Useless shit that hinders me in my work!

1. LESS CSS

- adds extra work (converting the made-up new syntax to what I really am trying to say, installing stuff on my server etc);
- adds Yet Another Layer Where Things Can Go Wrong between me and my rendered page;
- slows down the performance of the application, eats the computer resources;
- I don't write CSS for crappy grid HTML, so I don't need to go install some tool to help me do that

2. Handlebars.js

- adds extra work (converting the made-up new syntax to what I really am trying to say, installing stuff on my server etc);
- adds Yet Another Layer Where Things Can Go Wrong between me and my rendered page;
- slows down the performance of the application, eats the computer resources;
- it is really buggy;
- I don't write JS for crappy grid HTML, so I don't need to go install some tool to help me do that.

3. CoffeeScript

- in that you basically learn a whole new syntax... to write Javascript. Instead of writing... Javascript;
- adds extra work (converting the made-up new syntax to what I really am trying to say, installing stuff on my server etc);
- adds Yet Another Layer Where Things Can Go Wrong between me and my rendered page;
- slows down the performance of the application, eats the computer resources;
- knowing JavaScript very well, I don't need to go install some shit tool that breaks my mind instead of writing in the old good pure programming language.

4. jQuery

- Hey, Resig! Well-intentioned road to hell is paved with! So you invented just one more tool that gives to lamers the feel of knowledge. But now you are a world known person. Is it what you wanted?

You must use all these "tools" in case you are a real lamer and 'shit diving' is your favorite sport or if you need to do a visibility of work instead of work itself.

In conclusion, I would like to say the word of thanks to all the authors of the shit tools mentioned above: fuck you!

Sunday, May 19, 2013

ППКС

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

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

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

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

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