Полный наезд на Microsoft…=)

Да не, я не имею ничего против этой мегакорпорации с настоящим пуперкэпом у штурвала и таких же отважных коках на кухне этого лайнера (неплохая метафора)(заметил, что наконец-то додумался нажать Ctrl+I, чтобы выделить курсивом, мудак…fingerscrossed) Даже скорее наоборот. Не знаю как, но вышло что на моем компе скопилось много всяких прикольных фоток и рисунков так или иначе высмеивающих мелкомягкую фирму - вот и выкладываю. Все права на нижеидущие графические экzersiзеs принадлежат их автарам, в том числе и народу. Остальные права качайте себе сами:

Даже автовладельцев запарили…

bmw

Мистэ прэзидэнт - Вай ю стьюпид бой?

bush-mudak

Довольно извесная картинка, но может кто не видел…

changew

do-not-do-it-at-home

Выгода - бесценна…

linux-vs-win

Сервачок, ты мой сервачок

ms-crash

Кто, кто это сделал, дайте мне этого подлеца…я ему новый торт подарю…

bednyi-bill

Мы windusы, мы windusы, мы не курим папиросы…star

windus

PS: вот как господа блоггеры надо постить bloger-super

Tags:

Blogus tags : ,

…а музыка была: Аквариум - Никита Рязанский

Java, Visual Basic и C/C++ vs CSharp(C#)…

Вся эта тема насчет “А какой язык лучше начать изучать?”, “А как начать программировать?”, “А Биллом я смогу стать?”, “А дебилом?” или “Чем Ада отличается от Пролога? ” слегка поднадоела и размусолена на любом пограммерском форуме донельзя(интересно, а до льзя можно размусолить?) Вообщем я устал читать про то, что такое С# и чем он отличается от большинства языков. Свое мнение по этому поводу я уже высказывал.

Я этому к тому что нашел очень информативное сравнение языков, которое будет особенно полезно язычникам =):

Java and CSharp

VB. NET and CSharp

Собственно ради этих ссылок только и замутил этот пост - уж больно классные таблички. Что же касается С/С++ и CSharp - об этом кто только не писал: например Эрик, ну вот, и тут, и в любой книжке по C#. В целом С# и Java на сегодняйшний день являются наиболее отражающими принципы ООП языками программирования, которые наиболее распространены и используемы.

PS: ну и дерево языков программирования на десерт:

languages

PSS: и помните: Не все блоггеры одинаково полезны! ;=)

Интернациональный Капитализм и Коровы…

Опять же нашёл этот этюд на забугорном серваке и немного попереводил для Вас =):

ТРАДИЦИОННЫЙ КАПИТАЛИЗМ - У Вас две коровы. Вы продаете одну и покупаете быка. Ваше стадо умножается и бизнес растет. Вы продаете бизнес и живете на доходы.

АМЕРИКАНСКАЯ КОРПОРАЦИЯ - У Вас две коровы. Вы продаете одну и другую заставляете давать молоко за четырех коров. Вы удивлеяетсь когда корова умирает, отдав последнюю каплю молока.

ФРАНЦУЗСКАЯ КОРПОРАЦИЯ - У Вас две коровы. Вы бастуете, потому что Вы хотите три коровы.

ЯПОНСКАЯ КОРПОРАЦИЯ - У Вас две коровы. Вы перепроектируете их так, что они становятся размером с десятую часть обычной коровы, а производят молока в двадцать раз больше. Тогда Вы создаете мультики, где главным персонажем становится корова по имени Cowkimon(cow по-англ. корова) и торгуете ими по всему миру.

НЕМЕЦКАЯ КОРПОРАЦИЯ - У Вас две коровы. Вы заново проектируете их, так они живут в течение 100 лет, едят один раз в месяц, а молока все равно только на блюдце.

БРИТАНСКАЯ КОРПОРАЦИЯ - У Вас две коровы. Обе бешеные.

ИТАЛЬЯНСКАЯ КОРПОРАЦИЯ - У Вас две коровы, но Вы не знаете, где они. Вы садитесь завтракать.

РОССИЙСКАЯ КОРПОРАЦИЯ - У Вас две коровы. Вы считаете их и узнаете, что у Вас 5 коров. Вы считаете их снова и узнаете, что Вы содержите 42 коровы. Вы считаете их снова и узнаете, что у Вас только 12 коров. Вы прекращаете считать коров и открываете новую бутылку водки. (западный взгляд на нас…)

ШВЕЙЦАРСКАЯ КОРПОРАЦИЯ - У Вас 5000 коров, но ни одна не принадлежит Вам. Вы просто их храните.

ИНДУССКАЯ КОРПОРАЦИЯ - У Вас две коровы. Вы поклоняетесь им.

КИТАЙСКАЯ КОРПОРАЦИЯ - У Вас две коровы. Вы располагаете 300-ми доярками. Вы требуете полной занятости и высокой производительность.

Добиваем тему содержательной картиной:

pyramid

PS: а неплохо выходит: тИЦ - 60, PR - 4. Даже круто для владимирского деревенского уезда, точнее шлюза. Надо бы быть теперь по-разборчивей в расставлении ссылок. =)

К линкообмену готов!

Основы C#: часть II…

Классы и структуры

У класса две различные роли: модуля и типа данных. Класс — это модуль, архитектурная единица построения программной системы. Модульность построения — основное свойство программных систем. Модуль может не представлять собой содержательную единицу — его размер и содержание определяется архитектурными соображениями, а не семантическими.
Вторая роль класса не менее важна. Класс — это тип данных, задающий реализацию некоторой абстракции данных, характерной для задачи, в интересах которой создается программная система. С этих позиций классы — не просто кирпичики, из которых строится система. Каждый кирпичик теперь имеет важную содержательную начинку.

В теле класса могут быть объявлены:
• константы;
• поля;
• конструкторы и деструкторы;
• методы;
• события;
• делегаты;
• классы (структуры, интерфейсы, перечисления).

C# является языком объектно-ориентированного программирования, поэтому классы играют в нем основополагающую роль. Более того, все типы данных C#, как встроенные, так и определенные пользователем, порождены от базового класса object. Иными словами, в отличие от Java, где примитивные типы данных отделены от объектных типов, все типы данных в C# являются классами и могут быть разделены на две группы:

ссылочные (reference types);
обычные (value types).

Внешне ссылочные и обычные типы очень похожи, так как аналогично Cи++ в них можно объявлять конструкторы, поля, методы, операторы и т.д. Однако, в отличие от Cи++, обычные типы в C# не позволяют определять классы и не поддерживают наследования. Они описываются с помощью ключевого слова struct и в основном используются для создания небольших объектов. Ссылочные же типы описываются с помощью ключевого слова class и являются указателями, а экземпляры таких типов ссылаются на объект, находящийся в куче (heap). Продемонстрируем сказанное на примере:

using System;

class CValue
{

public int val;
public CValue(int x) {val = x;}
}

class Example_1
{
public static void Main()
{
CValue p1 = new CValue(1);
CValue p2 = p1;
Console.WriteLine(”p1 = {0}, p2 = {1}”,
p1.val, p2.val);
p2.val = 2;
Console.WriteLine(”p1 = {0}, p2 = {1}”,
p1.val, p2.val);
}
}

Откомпилировав и выполнив программу, получим следующий результат:
p1 = 1, p2 = 1
p1 = 2, p2 = 2

Как нетрудно видеть, p2 является всего лишь ссылкой на p1. Тем самым становится очевидно, что при изменении поля val экземпляра класса p2 в действительности изменяется значение соответствующего поля p1. Подобный подход не очень удобен при работе с примитивными типами данных, которые должны содержать само значение, а не ссылку на него (Complex, Point, Rect, FileInfo и т.д.). Для описания таких объектов и предназначены типы значений:

using System;
struct SValue
{
public int val;
public SValue(int x) {val = x;}
}
class Example_2
{
public static void Main()
{
SValue p1 = new SValue(1);
SValue p2 = p1;
Console.WriteLine(”p1 = {0}, p2 = {1}”,
p1.val, p2.val);
p2.val = 2;
Console.WriteLine(”p1 = {0}, p2 = {1}”,
p1.val, p2.val);
}
}

Вот что получится после запуска вышеприведенной программы:
p1 = 1, p2 = 1
p1 = 1, p2 = 2

Из этого следует, что экземпляр класса p2 является самостоятельным объектом, который содержит собственное поле val, не связанное с p1. Использование обычных типов позволяет избежать дополнительного расходования памяти, поскольку не создаются дополнительные ссылки, как в случае с экземплярами классов. Конечно, экономия невелика, если у вас имеется всего несколько небольших объектов типа Complex или Point. Зато для массива, содержащего несколько тысяч таких элементов, картина может в корне измениться. В таблице приведены основные отличия типов class и struct:

  Тип class Тип struct
Представление экземпляра типа указатель значение
Местоположение объекта куча стек
Значение по умолчанию null заполняется нулями
Результат операции присваивания для экземпляров типа копируется указатель копируется сам объект
Базовый тип встроенный тип string встроенный тип int

продолжение следует…