Что вы тут устроили? Мод-тян, что ты сделала с моим Доброчаном? Как сюда попали такие дилетанты? Почему они вдобавок еще и спорят между собой?
Глава 0 0 Вначале было слово, и слово было у Бога, и слово было Бог.
1 И сказал Бог: «да будет свет, и Земля, и зелень травная на ней, и рыбы морские в воде ее, и звери дикие на суше ее, и человек будет править ею». И стало так.
2 И правил человек Землёй, и зеленью на ней, и рыбами в воде её, и зверями на суше её, покуда мог;
3 Но расплодились твари и люди, и не смог более [он] управлять [ими]. И сотворил себе арифмометр.
4 Арифмометр же был прост и непрограммируем. [Человек] мог складывать на нем, и умножать, и делить; а что сверх того — то (было) не во власти его;
5 И сотворил тогда человек аналитическую вычислительную машину (Бэббиджа)
6 И писал программы для нее, выбивая их отверстиями на перфокартах для нее.
7 Отверстия же (или непробитые места) означали биты; биты слагались в байты, байты — в машинные слова, машинные слова — в инструкции; и был это машинный код;
8 И каждая инструкция (машинного кода) означала простое действие, которое выполняла машина.
9 И так, сочетая сии простые действия, то бишь, инструкции (машинного кода), программировал человек машину.
A Машинный код же был громоздкий и сложный, и были в нем десятки и сотни разных инструкций, и не мог человек запомнить их все;
B И тогда дал он каждой инструкции (машинного кода) название, краткое и запоминающееся, и назвал он их мнемониками; и так появился Ассемблер;
C И увидел Господь Ассемблер, что он хорош.
Глава 1 D Совершенствовал человек вычислительную машину, и создавал под нее программы,
E И программы становились все сложнее, и стало [людям] не хватать Ассемблера.
F Тогда сказал человек: «Сотворим же себе языки программирования, по образу и подобию Ассемблера, но с подпрограммами, циклами и ветвлениями», —
10 И сотворили люди языки программирования; иные создали Кобол, иные — Фортран, а иные — Паскаль;
11 Брайан Керниган и Денис Ритчи же сотворили C;
12 И посмотрели люди на C, и увидели, что он хорош; и стали писать на нем программы, и библиотеки, и операционные системы, и компиляторы, и компиляторы компиляторов;
13 И увидел сие Господь, и сказал: вот, хорошо весьма.
Глава 2 14 Страуструп же был хитрее всех людей на Земле;
15 Посмотрел он на Симулу (которая в те времена уже называлась Смоллток), и спросил человека:
16 «Что же ты не пишешь классы, не создаешь объекты, не посылаешь сообщения им?»
17 Человек же отвечал: «Керниган и Ритчи, создатели C, не предусмотрели сего».
18 Тогда взял Страуструп C и совокупил его с Симулой 67, и стали функции внутри struct; и совокупил он его с Алголом 68, и появились в C перегружаемые операторы; потом познал он его макросы, и вырос у C template;
19 И дал Страуструп сей язык человеку, и сказал: «вот, я сотворил тебе C++; пиши на нем»;
1A И увидел человек, что C++ есть C, но с классами, с перегружаемыми операторами и template;
1B И стал писать он на нем, и перегружать операторы, и создал на нем «iostream».
1C Господь Бог же сидел в то время в ФИДО, читая эху; и увидел он программу:
#include <iostream>
void main()
{
std::cout << "Hello, world!";
}
1D И спросил Господь у человека: «ты чё, обосрался, что ли, мудак?»
1E Человек же сказал: «вот, Страуструп дал мне C++, и я писал на нем»;
1F И сказал Господь: «что ты это сделал? вот, за это посылаю я тебе индусов; они будут писать тебе говнокод, а ты будешь его поддерживать;
20 «В багах и мемори-ликах будут твои программы, а программисты твои станут опущенками среди других профессий».
Глава 3 21 В то время иные программы интерпретировались, а иные транслировались в машинный код;
22 И не было других программ, кроме [написанных] на машинном коде, и языки программирования — лишь удобные представления его;
23 Машинный код же на разных компьютерах был разный;
24 И не было согласия у них (людей); и программа, написанная для x86, не запускалась на AMD64;
25 Тогда сказал человек: «сотворим же еще одну машину, и да будет машинный код её стандартизирован и един для всех, и да будет сей код байт-кодом.
26 «А дабы не выбрасывать старое [оборудование], сделаем новую машину виртуальной, и да работает новая машина поверх старых машин»
27 И сотворили Яву.
28 Индусы же знали только C++, полиморфизм, инкапсуляцию и наследование; и люди сделали Яву целиком на классах и с синтаксисом, как у C++.
29 ООП же индусы не знали (как и операторы и множественное наследование); и люди сделали в Яве одиночное наследование, выкинули перегрузку операторов, разделили типы на ссылочные и примитивные, напидорасили абстрактных фабрик [XML-ей] в стандартной библиотеке и вообще скатили Яву в сраное, тормозное говно.
2A Microsoft же следовала стратегии «embrace, extend and extinguish»; и создала J++;
2B И подала Sun Microsystems на нее в суд за это; и создала тогда Microsoft NGWS, а ныне .NET Framework;
2C И была в .NET виртуальная машина, называемая CLR, и исполняла она программы, названные сборками, и исполяла она машинный код AKA байт-код, и был для байт-кода язык ассемблера — CIL.
2D Ява была кроссплатформенна лишь на словах из справки; .NET же был истиннно кроссплатформенен, но работал только под Windows;
2E Тогда пришел Мигель де Иказа и запилил со всей резкостью Mono; и стал тогда .NET кроссплатформенен.
*2F ...если не считать
http://www.mono-project.com/Compatibility.* 30 Были и другие виртуальные машины, но если писать о них обо всех подробно, то, думаю, и всему миру тогда не вместить написанных книг.