Archive for the ‘code’ Category

The march of progress

Saturday, November 17th, 2007

Това го видях на един друг блог и ме накара да се замисля :)
От къде са тръгнали синтактичните правила и на къде отиват.

The March of Progress

1980: C
printf("%10.2f", x);

1988: C++
cout < < setw(10) << setprecision(2) << showpoint << x;

1996: Java
java.text.NumberFormat formatter = java.text.NumberFormat.getNumberInstance();
formatter.setMinimumFractionDigits(2); formatter.setMaximumFractionDigits(2);
String s = formatter.format(x); for (int i = s.length(); i < 10; i++) System.out.print(' ');
System.out.print(s);

2004: Java
System.out.printf("%10.2f", x);

Полиглотски програми

Sunday, November 11th, 2007

Случайно във Википедия попаднах на интересна статия за това как един и същи сорс може да бъде валиден за няколко _различни_ езика. Едновременно :)
Ето една примерна програма (копната от линка по-горе), която е валидна и се изпълнява на ANSI C, PHP и bash:

#define a /*
# echo "\010Hello, world!\n"// 2> /dev/null > /dev/null \ ;
// 2> /dev/null; x=a;
$x=5 // 2> /dev/null \ ;
if (($x))
// 2> /dev/null; then
return 0;
// 2> /dev/null; fi
#define e ?>
#define b */
#include
#define main() int main()
#define printf printf(
#define true )
#define function
function main()
{
printf "Hello, world!\n"true/* 2> /dev/null | grep -v true*/;
return 0;
}
#define c /*
main
#*/

Всъщност колкото и да е валидна, не можах да я пусна едновременно на повече от 2 езика. В този си вид се изпълнява на bash и се компилира на С, но дава грешка на PHP. Когато я редактирам за PHP почва да дава грешка на bash :)

Интересен език за програмиране – ZOMBIE

Thursday, November 8th, 2007

Тук намерих някакъв абсолютно побъркан език за програмиране :)
Има три вида структурни единици (типове данни): undead, demons и djinn.
Всяка се 'призовава' за да изпълни конкретна задача, всъщност май целия език се гради на описания на задачите...

Ето пример за програмата за 99-те бутилки:

minusOne is a zombie
summon
remember -1
bind

lotsofbeer is a zombie
summon
remember 99
task Beersong
shamble
say moan lotsofbeer
say bottles of beer on the wall,
say moan lotsofbeer
say bottles of beer
say Take one down, pass it around
remember moan minusOne moan lotsofbeer
say moan lotsofbeer
say bottles of beer on the wall
until remembering 1
say 1 bottle of beer on the wall, 1 bottle of beer, take it down, pass it around no more bottles
say of beer on the wall.
animate
animate