Сейчас научу я вас программировать!

Но прежде чем станете вы рефлексировать:

«Я сам так умею!», «Зачем мне то надо?»,

«Вот, тоже мне спец?!», «Эй, автор! Не надо тут…»


Отвечу я просто:

— Да, фана лишь ради!

Отбросьте вы ручки все и тетради,

Чаю налейте, печенья возьмите,

Того и гляди, английский подучите.


С чего мы начнём? Да сразу — к хардкору (hardcore)!

Никаких «Здравствуй, мир!» разговоров.

Сходу напишем мы здесь «вайл тру»:


while (true);


А вот что это значит, поймём лишь к утру.


Теперь перевод: «Пока (то всё честно);»

Программа стремиться быть интересной,

А может, и нет. Ведь здесь есть подвох,

Но о нём мы узнаем лишь в срок.


Теперь переходим мы к интерфейсам (interfaces).

Нет, то не части лица или фэйса (face).

Это лишь «точки соприкосновения»

Вашего и чужого, по определению.


Публичные (public) они могут быть и приватные (private).

Первые часто доводят драки, вторые — развратные.

Но прежде чем перейдём мы к примерам,

Пора нам узнать и о переменных,


Типах, объектах и знаках препинания —

Без них не понять бесполезные знания.

Зачем они вам — решите вы сами,

Ну а пока, давайте ж всё ж с нами.


Точка с запятой «;» — конец предложения

И инструкция для выполнения.

Переменная «var» любого есть типа,

Который для краткости в три буквы скрытый.


— Зачем переменные? — спросите вы.

— Ну… Где-то как чашки нужны для воды.

Можно как зверь ходить к водопою,

Но, как по мне, проще взять их с собою.


Скобки фигурные «{}»— это границы

Песочницы, где мы будем учиться.

Всему, что внутри, за границей не место,

Кроме тех случаев, что здесь неуместны.


Скобочки круглые «()» — это условие.

Другими словами: «Нужно мне то ли?»

А дальше, пожалуй, начну я себя:


Object i; // Объектик по имени «ай» — это «я»


Так, читатель, обожди здесь немножко!

Пару слешей «//» нам надо в дорожку.

Создатель — он человек склерозный,

Без комментариев будет нервозным.


Object i; // Здесь я лишь в проекте, ещё не родился,


Ведь мой тип, пол, цвет глаз… не определился.

Кто я?


class Zemlyanin { // Тип Землянин. Так и запишем.

// А интерфейс (interface) потом мы допишем.

}


Теперь не «объект» я, а гордый


Zemlyanin i = new Zemlyanin(); // Землянин!


Командой «создать» (new) в мире заявлен.

Пока я бездельник, но сейчас всё исправим —

Интрефейсика быстро мне тут добавим.


class Zemlyanin {


// Так, я хочу быть слегка сероглазым —

// Строчный параметр (param) добавлю я сразу,

// Но лишь намёком! Не смотрите так грозно!

// Я вам хардкор обещал — не взрыв мозга.


// Это конструктор объекта-меня,

public Zemlyanin (string param) {}


// А функции ниже и для Землян.


// Список (List) Землян в уголках «<>», там где тип.

// Друзяки (friends) мои, с кем хочу затусить.

public void GoOutWithFriends(List<Zemlyanin> friends) {}


// Однако сначала их надо найти.

// Не ждать же, пока соизволят прийти?

public List<Zemlyanin> LookingForFriends() {


// Тут надо бы всё же что-то вернуть (return),

// Чтобы программу совсем не загнуть.

// Список пустой я верну здесь пока,

// Чтобы книгу закрыть не поднялась рука.

return new List<Zemlyanin>();

}


// А то, что дальше, на моё усмотренье!


// Кому улыбнуться моё ведь решенье.

private void SayHiAndSmile() {}


// Кого приобнять я хочу,

private void Hug (Zemlyanin other) {}


// Кого приласкать,

private void Caress (Zemlyanin other) {}


// Кого лесом послать,

private void ExitThere (Zemlyanin other, string where) {}


// Кому сердце отдать.

private void GiveYouMyHeart (Zemlyanin other) {}

}


На этом пора с интерфейсом кончать,

Чтоб не успели вы заскучать.

Как видите, много я тут упустил,

Но, думаю, ясен был мой посыл.


И что же мне делать теперь с этим вот?

Как что? Пора-ка идти мне в народ!


// Допишем мы public к типу Землянин.

public class Zemlyanin {}


А что это значит, догадались вы сами?


Теперь интерфейс мой публичный доступен

Для всех — для кого я был неприступен.

А как достучаться ко мне и в приватный (private):

Веселый, шутливый, порой, адекватный?


— Никак. Но есть языки, где есть лазейка:

Другом назвался — пролез в телогрейку.


Тех, кто не в теме, не хватит испуг,

Если к ти́пу я допишу слово «друг» (friend),


friend class ZemlyaninFriend;


И если ЗемлянинаДруг обнаглеет,

То он в привате (private) совсем оборзеет:


Дёргать посмеет за то (that) и за это (this),

Пока не получит по морде (interface) он где-то


class Zemlyanin

{

private:

// Методом, что был случайно объявлен,

void* dontTouchThat()

{

// Но результатом никак не проявлен.

return NULL;

}

};


Способ дерьмовый, скажу я вам честно —

В интимные функции лезть всё ж не лестно.

Так что давайте не углубляться

И в рамках публичности (public) всё ж оставаться.


Встречал и таких, кто не понимает,

Что в паблик (public), порой, не то выставляет,

Кто лезет в приват (privat) и тянет щипцами

За то, что сделает нас потом лишь врагами.


Я верю, мы с вами люди приличные!

И программисты будем отличные!

Забудем о них и спокойно продолжим —

Ведь я как-никак подвох ещё должен.


Вернёмся к началу: «Пока (где всё честно);».

Время настало для интересного:

Засуну-ка я себя в эту вечность

И жизнь проживать буду беспечно:


Zemlyanin i = new Zemlyanin(“серые глаза”);

while (true);

{

// Начну я с того, что найду здесь друзей.

var friends = i.LookingForFriends();

// Если нашлись,

if ((friends != null) && (friends.Count > 0)) {

// То жить веселей!

i.GoOutWithFriends(friends);

}

}


Запустил я программу — зависла надолго.

От поисков что-то не видно мне толка.

Заметил ли ты, дорогой мой читатель,

В программе где той накосячил создатель?


Ошибка простая — всего один знак —

И жизнь «ай» Землянина наперекосяк!

До поисков дружбы ему не дойти,

Ведь тчк-зпт (semicolon) не превзойти!


Коварную точку ту с запятой

Я уберу властной рукой!


Zemlyanin i = new Zemlyanin(“серые глаза”);

while (true) {

var friends = i.LookingForFriends();

if ((friends != null) && (friends.Count > 0)) {

i.GoOutWithFriends(friends);

}

}


Всё! Класс!

Запускаем!

И снова

Офигеваем…


Теперь бесконечность проводим в тусовке:

И ночью, и днём, и без остановки!!!

Того ли хотел от нас наш создатель?

Какой-то он, что ли, недоброжелатель?


Пока мы млады, без самоконтроля,

Пожалуй, нужна нам внешняя воля.

Но истину (true) ложью (false) не буду скрывать,

А лишь тормоза (break) пойду добавлять.


Условий возможных не перечесть,

Но можно хотя бы время учесть.


// Начало тусовки мы засекаем,

var now = DateTime.Now;

long startTicks = now.Ticks;


// Время в заметках себе сохраняем,

Console.WriteLine(now);


// 5 секунд на движуху всё ж разрешаем

long endTicks = startTicks + 10000 * 1000 * 5;


Zemlyanin i = new Zemlyanin(“серые глаза”);


// И снова отважно в вечность ныряем!

while (true) {

var friends = i.LookingForFriends();

if ((friends != null) && (friends.Count > 0)) {

i.GoOutWithFriends(friends);

}


// Если тусили достаточно долго,

now = DateTime.Now;

if (now.Ticks > endTicks) {

Console.WriteLine("{0} - Пора меру знать. На выход! И только!", now);

break;

}

}


Фух! Жизнь «ай» Землянина вновь завершилась,

Хоть мало чего у него приключилось…

Бедный создатель, мне его жалко:

Вечно в колёса суют ему палки.


Вот как так творить? Мне не понятно!

Правда, порою, очень занятно.

А сколько всего тут надо учесть,

Чтобы беды на «объект» не навлечь…


// В цикле моём косяков (todo) ещё тьма,

while (true) {}


// Но оставлю их вам для разминки (fix) ума.

// И интерфейс бы продумать (define) там надо,

// Чтоб прилетала (implement) в private лишь награда.


Но суть этой басни вовсе не в том,

Кто с кем, зачем, и что будет потом.

Мораль здесь простая, запомнить не сложно:

Со знаками надо быть осторожным;


Решайте, что в public вы миру несёте,

Да и кому свой private отдаёте;

Запомните всё ж, что вселенская вечность,

Порой, не прощает нам нашу беспечность…


То был косяк, а вот вам подвох.


// У

while (true);

// Другой смысл быть мог:

// Быть верным себе до скончанья времён,

// Не боясь ни объектов (i), ни перемен (var).


— Сам ли такой?

— Нет, — я скажу.

Я лишь сижу и пишу ерунду.

Хоть языков тех и много я знаю,

Только вот как-то пока не летаю…


Надеюсь, вам чуточку было занятно

Побыть с программистом таким непонятным,

Кто втирал вам опять не́весть о чём,

Да ещё и на ша́рпе (C#) с плюсами (С++) при том.


Если понравится это творенье,

Отправлю Землянина я в приключенья!

i.WishYou(“Разрешить все сомненья!”);

Error: undefined WishYou // Ошибка в определеньи!


P.S.

Хотите проверить: наврал или нет?

Вот вам онлайновый Fiddle .Net: https://dotnetfiddle.net/

using System.Collections.Generic; // Надо сверху добавить,

А двойные кавычки на английском поставить.


P. P. S.

АТ мой форматинг (formatting) жутко сбивает.

Пусть программисты (software developers) меня не ругают.

Я честно старался отступы делать,

Но я не фронтэнд (frontend) инженер, что поделать.

Загрузка...