Курс обучения программированию на Java

 

Курс обучения программированию на Java
Курс обучения программированию на Java

Обучение на 80% состоит из практики

В Интернете много хороших книг, но читая книги программистом не станешь. Чтобы стать программистом, нужно много программировать. JavaRush — это онлайн-курс обучения программированию на Java, на 80% состоящий из практики. Именно то, что нужно чтобы стать Java‑программистом.

1200 практических заданий
Сколько практических заданий должен содержать идеальный курс по Java? 10, 20, 100? Курс JavaRush содержит 1200 практических задач возрастающей сложности. Задачи небольшие, но их много, очень много. Как раз тот минимум, выполнив который, вы получите опыт необходимый для трудоустройства.

500+ часов опыта программирования на Java
Курс Java разбит на 40 уровней. Вы можете перейти на следующий уровень, только если решили большую часть задач текущего уровня. Начиная с маленьких и легких и заканчивая большими и очень полезными. Каждый, дошедший до конца, получит 500+ часов практического опыта. Серьезная заявка на победу. И на работу.

Курс обучения программированию на Java

План обучения:

  1. Знакомство с Java: вывод на экран, типы String и int
  2. Знакомство с Java: переменные, методы, классы
  3. Первая программа: ввод с клавиатуры, работа в IDE
  4. Знакомство с ветвлениями и циклами
  5. Знакомство с классами: написание своих классов, конструкторы
  6. Знакомство с объектами: написание своих объектов, время жизни, статические переменные
  7. Массивы и списки: Array, ArrayList, знакомство с Generics
  8. Коллекции: LinkedList, HashSet, HashMap. Date - дата.
  9. Знакомство с исключениями: try, catch, throws, multy-catch.
  10. Приведение примитивных типов: расширение и сужение.
  11. Основы ООП: основные принципы, наследование, инкапсуляция.
  12. Основы ООП: перегрузка, полиморфизм, абстракция, интерфейсы.
  13. Интерфейсы: сравнение с абстрактным классом, множественное наследование.
  14. Приведение типов, instanceof. Большая задача на интерфейсы.
  15. Перегрузка методов, особенность вызова конструкторов
  16. Знакомство с нитями: Thread, Runnable, start, join, interrupt, sleep
  17. Знакомство с нитями: synchronized, volatile, yield
  18. Знакомство с потоками: InputStream/OutputStream, FileInputStream, FileOutputStream
  19. Знакомство с потоками: Reader/Writer, FileReader/FileWriter
  20. Сериализация
  21. Устройство объекта Object: equals, hashCode, clone, wait, notify, toString(),...
  22. String: mutable, immutable, format, StringTokenizer, StringBuilder, StringBuffer
  23. Внутренние классы, примеры: Map.Entry
  24. Внутренние классы, особенности реализации
  25. Создание и остановка нитей: start, interrupt, sleep, yield.
  26. Совместный доступ к монопольным данным: synchronized, volatile
  27. DeadLock. Wait, notify, notifyAll
  28. ThreadGroup, ThreadLocal, Executor, ExecutorService, Callable
  29. Autoboxing, особенности реализации
  30. Операторы: числовые, логические и бинарные
  31. Работа с файлами и архивами
  32. RMI и динамический прокси
  33. JSON, JavaScript
  34. Рекурсия. Сборка мусора и типы ссылок в Java. Логгирование
  35. Создаем первое веб приложение. Работа с Tomcat и Idea
  36. Основные паттерны для создания веб приложений. Углубленное изучение коллекций
  37. Паттерны проектирования. Утилитные классы Arrays. Collections
  38. Методологии разработки. Аннотации в Java. Иерархия исключений
  39. Системы контроля версий: Git и SVN. Generics
  40. URI, URL. REST сервисы. Создаем свое клиент-серверное приложение.

Курс обучения программированию на Java



Знакомство с Java: вывод на экран, типы String и int

Будущее наступило


Одними из атрибутов 20-го века были пылесос, стиральная машина, телевизор и автомобиль.

Если вы продолжаете стирать одежду в ручную, ездите на лошади, используйте свечи для освещения, то, по меркам 20-го века, вы живете - в 19-м.

Атрибутами 21-го века стали интернет, мобильный телефон, skype, социальные сети.

С помощью интернета можно получить доступ к любой информации известной человечеству. В интернете можно работать и вести бизнес, получить образование и преподавать.

С помощью социальных сетей можно найти друзей, работу, девушку, группу по интересам. Вы можете познакомиться практически с любым человеком в мире, попросить у него совета или помощи. Вы можете заводить друзей во всем мире, а потом приехать в гости или пригласить их к себе, или съездить куда-то вместе.

С помощью скайпа вы можете пообщаться со своими друзьями, братьями, сестрами, родителями, родственниками, и любыми людьми во всем мире. Бесплатная видеосвязь с любой точкой мира. Об этом 20 лет назад даже и мечтать не смели. Сейчас это обыденный факт.

Google Street View позволит вам «прогуляться» по улицам любого города любой страны земного шара. Вы можете выбрать место, где хотели бы провести всю свою жизнь, и приехать туда.

Владелец «современного телефона» может: говорить, писать сообщения, пересылать картинки, искать информацию в интернете, установить сотни тысяч бесплатных приложений. Что еще? Делать видео-звонки, слушать музыку, смотреть видео, снимать видео, делать фото, увидеть свое местоположение на карте, вести в нем заметки, использовать как органайзер, общаться в социальных сетях и лайкать котиков.

Курс обучения программированию на Java

Вы можете за год выучить английский (или любой другой язык), слушая аудиокурсы, когда едите на работу и с работы. Любая информация доступна в интернете, любые учебники. Хотите видео-лекции лучших мировых вузов с субтитрами? Они там тоже есть.

Если вы владеете английским, вы можете написать книгу, выложить ее на Amazon и заработать целое состояние. Вы можете за несколько сотен долларов заказать себе сайт и вести бизнес через интернет со всем миром.

Хватит жить в 20-м веке и ждать, что вам скажут, что учить, когда сдавать, что делать и где жить. Решайте это сами. Возможности изменить свою жизнь окружают вас на каждом шагу.


Есть такой старый анекдот, напоследок:

Случилось как то наводнение. Все спасаются, кто как может, и только старый, очень набожный еврей сидит и молится.
Мимо проезжает грузовик, сидящие в кузове кричат:
- Хаим, полезай в кузов, спасайся!
- Я всю жизнь молился и соблюдал все традиции, меня Бог спасет - отвечает Хаим.
Вода доходит уже до окон. Мимо проплывает лодка. Тот же вопрос и тот же ответ.
Вода доходит до крыши, Хаим сидит на крыше и молится.
Спускается с неба вертолет. Тот же вопрос, тот же ответ. И Хаим утонул.
И уже в другом мире стал попрекать Бога:
- Я всю жизнь молился и соблюдал все традиции, почему же Ты меня не спас?
- Я тебе и машину, и лодку, и вертолет посылал, так в чем же дело?


1.Знакомство с программой

- Привет, мой юный друг. Надеюсь, ты не забыл, что я - бюрократ в 16-м поколении. Если бы я не систематизировал все знания, которые у меня есть, то никогда бы не добился таких высот. У меня куча разной справочной информации. Я буду помогать тебе с некоторыми задачами. Давай для начала я расскажу тебе, что представляет собой типичная программа на Java.

- Да, я слушаю.

- Факт первый. Программа на Java состоит из классов. Каждый класс хранится в отдельном файле. Имя файла совпадает с именем класса, расширение файла – java.

- Программа состоит из набора файлов с расширением java, и в каждом файле написан код одного класса, так?

- Абсолютно правильно, Амиго! Если файл называется MyCat.java, то он содержит класс MyCat.

- Факт второй. Когда у нас много файлов с классами, мы группируем их в папки и подпапки. Классы при этом группируются по пакетам и подпакетам. Имена пакетов и подпакетов нужно указывать в коде класса, и они должны совпадать с именами папок и подпапок на диске.

- Т.е. с одной стороны у нас есть файлы, разложенные по папкам, а с другой - классы, разложенные по пакетам. При этом имя класса обязано совпадать с именем файла, в котором этот класс описан. А имя пакета совпадает с именем папки, в которой хранится класс.

- А можно больше подробностей?

- Имена вложенных пакетов описываются через точку, почти как ссылки в интернете.

- Т.е. если у тебя есть класс Cat, который лежит в пакете “animals.pets”, то это значит, что:

  1. На диске есть папка, например src, где хранятся все файлы проекта;
  2. В ней есть папка animals, в которой есть папка pets,
  3. В папке pets есть файл Cat.java, который и содержит код класса Cat.

- Вроде понял, но не уверен.

- Смотри, структура классов и пакетов полностью повторяет структуру папок и файлов на диске. Если есть файл House.java, который лежит в папке src/com/houses/, то это значит, что существует класс House, который находится в пакете com.houses.

- Понял.

- А ты сообразительный малый. Внимание на экран - вот код небольшого класса. Я подписал все ключевые моменты:

Курс обучения программированию на Java

- Все понятно, насколько это может быть понятно с первого раза. Хе-хе.

- Молодец! Много и не надо. Ты главное хоть что-нибудь пойми, а полное понимание придет со временем. Теперь я пойду спать, а тобой займётся кто-нибудь ещё.

2. Как пользоваться курсом на сайте JavaRush

Курс обучения программированию на Java

- Добрый день, Амиго. Меня зовут Джон Бобров, я - капитан корабля Galactic Rush.

- Добрый день, капитан.

- Я расскажу тебе как устроен наш учебный процесс и как пользоваться нашим сервисом.


Как пользоваться курсом на сайте JavaRush

Я всегда утверждал своим ученикам, что программирование - это просто и интересно. Теперь и вы сможете в этом убедиться.

Цель всего курса – получить удовольствие, хорошее настроение и реальные навыки программирования на Java, чтобы легко устроиться работать программистом. Для этого на JavaRush есть много практических заданий. Кроме того, сложность заданий постепенно растет от простых к самым сложным.

Устройство игры

Курс состоит из 40 уровней. Каждый уровень содержит 10-12 лекций и 20-30 практических задач.

Каждому уровню соответствует отдельная солнечная система на звездной карте. Лекциям внутри уровня – планеты солнечной системы. Каждая открытая лекция – это перелет на очередную планету. Когда все лекции открыты, корабль перелетает к следующей звездной системе.

Курс обучения программированию на Java

За решение практических задач, просмотр мультфильмов и многое другое, вы получаете награду – несколько единиц «черной материи»:


Курс обучения программированию на Java


Чтобы перейти к следующей лекции или уровню, нужно сделать «перелет на корабле», который требует «одну заправку корабля»:


Курс обучения программированию на Java



На каждую «заправку корабля» уходит 5 единиц «черной материи».


Переход на следующий уровень

Чтобы перейти на следующий уровень, нужно просто пройти все лекции текущего уровня. Чтобы перейти к следующей лекции нужно нажать большую зелёную кнопку:


Курс обучения программированию на Java



При этом ваш космический корабль перелетает на очередную планету. Если у вас закончилось топливо или не заправлен корабль, то кнопка откажется нажиматься и будет выглядеть так:


Курс обучения программированию на Java


Заправить корабль можно в разделе «МОЯ СТРАНИЦА». Если для заправки корабля не хватает черной материи, вам нужно решить несколько задач и заработать ее. Воспользуйся для этого жёлтой кнопкой слева от лекций, напротив практических заданий:


Курс обучения программированию на Java


Практические задания

Ввод кода по образцу - это самое простое практическое задание. Для выполнения этого задания, вы должны в нижней части окна ввести Java-код, идентичный образцу (он в верхней части окна).


Курс обучения программированию на Java

Написать программу – это практическое задание средней сложности. Для его выполнения вы должны написать программу на Java. Для этого нужно придумать, как ее решить и ввести код решения в основное окно. После этого нажмите кнопку:

Курс обучения программированию на Java

Для вашего удобства, а также упрощения проверки программы, код стоит писать только в месте, отмеченным комментарием «напишите тут ваш код»

Если программа компилируется без ошибок, окно станет зелёным. Вот так:


Курс обучения программированию на Java

Также, в случае успешной компиляции, программа автоматически будет протестирована – правильно ли решена поставленная задача.

Если программа выводит что-либо на экран, ниже есть специальное окно (обозначенное словами «Выходные данные»), показывающее все, что программа вывела на экран при последнем запуске.

Вы всегда можете скрыть окно с кодом, чтобы посмотреть что-то в лекциях или отложить решение задачи. Достаточно просто нажать кнопку справа вверху. А потом можно снова вернуться к вашему заданию. Ваш код при этом не потеряется. Кнопка выглядит вот так:

Если размер окна с кодом слишком мал, вы можете максимизировать его, нажав кнопку максимизации (доступно с 4-го уровня):


Домашние задания нужно решать в Intellij IDEA (доступно с 3-го уровня). Это особая программа для программистов (IDE), для удобного написания программ. Я написал специальный плагин для IDEA, который даст вам возможность мгновенно проверять вашу программу на правильность. Он состоит всего из двух кнопок:


Левая кнопка показывает список доступных для вас задач:

Курс обучения программированию на Java


Правая кнопка отправляет задачу на сервер на проверку:


Курс обучения программированию на Java

Также вы можете зарабатывать «черную материю», просматривая различные обучающие и мотивационные видео, которые дает Хулио:

Курс обучения программированию на Java



3.Риша

- Это опять я: забыл кое-что объяснить. Сейчас я расскажу тебе про переменные и адресацию памяти. Не сильно вникай, но если что-то запомнишь – уже хорошо!

- Люблю твой подход к урокам. Понял что-то – хорошо. Ничего не понял – ну и ладно.

- Насильно мил не будешь. Это же очевидно. А что, у вас не так?

- Нет. У нас другой подход: хочешь – учишь, не хочешь – учишь, но нехотя.

- М-да, какой отсталый подход к обучению. Это ж вы уйму сил и времени тратите, а результатов почти нет.

- Еще как тратим! Ладно, не будем о грустном.

- Ладно. Представь себе Excel. Все знают Excel. Страница в Exсel'е состоит из ячеек, и у каждой ячейки есть её уникальный номер (A1, A2,…B1, B2). Зная номер ячейки, всегда можно записать в неё какое-то значение или же получить значение, которое там хранится. Память компьютера устроена очень похоже.

Курс обучения программированию на Java

- Пока все понятно.

- Программа и её данные во время работы хранятся в памяти. Вся память компьютера представлена в виде маленьких ячеек - байт. У каждой ячейки есть её уникальный номер - 0,1,2,3,... (нумерация начинается с нуля). Зная номер ячейки, мы можем сохранить в неё какие-то данные. Или взять их из неё. В одних ячейках хранится код программы - набор команд для процессора, в других - данные этой программы. Номер каждой ячейки также называют её адресом.

- Процессор, команды - мне профессор что-то рассказывал про это, но не очень подробно.

- Процессор – это такая штука, которая умеет исполнять команды из загруженной в память программы. Почти все команды процессора – это что-то типа "взять данные из некоторых ячеек, сделать с ними что-то, результат поместить в другие ячейки". Объединяя сотни простых команд, мы получаем сложные и полезные команды.

- И зачем мне все это?

Когда в коде программы объявляется переменная, ей выделяется кусочек ещё не использованной памяти. Обычно это несколько байт. При объявлении переменной также нужно указать тип информации, которую программа будет хранить в ней: числа, текст, или другие данные. Для удобства каждой переменной задаётся уникальное имя.

- Т.е. переменная – это имя и тип или кусок памяти и какое-то значение?

- Все вместе. Вот посмотри на несколько примеров.

Курс обучения программированию на Java

4. Знакомство с типами int и String

- Привет, Амиго.

- Здравствуйте, Эллеонора Керри.

- Называй меня просто Элли, а то звучит как-то слишком официально.

- ОК, Элли.

- Я думаю, что с моей помощью ты быстро станешь одним из лучших. У меня большой опыт в обучении новичков. Слушай меня, и дело пойдёт как по маслу. Итак, приступим.

- В Java есть два основных типа: String и intВ String мы храним строки/текст, а в int – числа (целые). Чтобы объявить новую переменную, нужно написать её тип и имя. Это имя не должно быть именем другой переменной и/или функции.

Курс обучения программированию на Java

- При объявлении переменных в них сразу можно заносить их значения.

Курс обучения программированию на Java

- Для того, чтобы занести новое значение в переменную, используется знак “=”. Его ещё называют «оператором присваивания». Присваивание – это занесение в переменную значения, взятого из другой переменной или вычисленного на основе нескольких переменных.

Курс обучения программированию на Java

- При вычислении нового значения переменной может использоваться её старое значение.

Курс обучения программированию на Java


- Строки можно объединять, используя знак плюс:

Курс обучения программированию на Java

- Иногда удобно использовать строки, состоящие из одного или нескольких пробелов:

Курс обучения программированию на Java

Сейчас мы рассмотрим, как выводить текст и значение переменных на экран:

Курс обучения программированию на Java


Курс обучения программированию на Java

- Кстати, Диего просил передать тебе пару задачек:

Курс обучения программированию на Java


5. Диего плохого не посоветует

Курс обучения программированию на Java

- Привет, дружище! Это я - Диего, помнишь меня? Я тот, кто научит тебя по-настоящему нужным вещам для робота!

- Ты меньше слушай эти «мясные консервы» – целее будешь. Разве что-то может заменить практику? Ты же не собираешься и плавать научиться сидя за партой? Или собираешься? Ха-ха. Практика – наше всё. Мы же – роботы.

- Вот тебе новое задание:

Внесите изменения в программу, чтобы переменная s была равна 5, t была равна 6, а x равна 7. Программа должна компилироваться.

6. Заключение контракта

 - И это снова я! Думаю, ты уже достаточно знаешь, чтобы начать принимать важные решения. Как раз подошло время подписать контракт с твоим новым работодателем. Тебе нужно написать заявление, вот стандартная форма. Просто выведи на экран её текст и всё. Подписывай не глядя, я так всегда делаю.

Новое задание: написать программу, которая выводит на экран строки:

Меня зовут Амиго.


Я согласен на зарплату $800/месяц в первый год.
Я согласен на зарплату $1500/месяц во второй год.
Я согласен на зарплату $2200/месяц в третий год.
Я согласен на зарплату $2700/месяц в четвертый год.
Я согласен на зарплату $3200/месяц в пятый год.

Поцелуй мой блестящий металлический зад!

Риша возвращается:

- Ну и как у тебя дела?

- Готово. Подписал.

- Отлично! Я тоже подписываю не глядя. Мы в Galactic Rush никогда не обманываем друг друга.

- Хе-хе. Спасибо за щедрость, друг Риша!


7. Вывод на экран

- Это снова я. Сегодня я проведу для тебя три занятия. А это – второе! Садись и слушай, и я расскажу тебе о выводе на экран. Это очень легко и просто:

Курс обучения программированию на Java

- А можно ещё раз про print() и println()?

Весь текст выводится на экран последовательно, с помощью функции print(), буква за буквой. Когда места в строке на экране не остаётся, текст начинает выводиться на следующей строке экрана. Можно досрочно завершить вывод на текущей строке, и заставить выводить текст дальше на следующей строке, если использовать функцию println().

- Понятно. А что за магия со сложением чисел и строк?

- Если складываются два числа, то результатом тоже будет число: 2+2 равно 4. Если складываются число и строка, то число преобразуется в строку и, затем, просто объединяются две строки.

- Ага. Я тоже примерно так и думал, глядя на примеры, но мало ли. Спасибо за интересную лекцию, Элли.


8. Сравнение с паскалем

Курс обучения программированию на Java

- Привет! Меня зовут Лага Билаабо, я – инопланетянин и врач этой экспедиции, надеюсь, мы станем друзьями.

- Я тоже.

- На нашей родной планете мы используем прогрессивный язык программирования Pascal, вместо отсталой Джавы. Вот тебе небольшой пример сравнения Java и Pascal:

Курс обучения программированию на Java

Это одна и та же программа, записанная на разных языках. Как видишь, в паскале она занимает меньше строчек – это признак того, что паскаль прогрессивнее.

- Я думаю, такое сравнение может ускорить твое понимание Java, если ты когда-то видел Pascal.

- Нет, не видел, но все равно было бы интересно посмотреть сравнение двух разных языков программирования.

- Разумная мысль. Тогда я продолжу.

- В паскале мы помещаем написанный код в тело программы, в процедуры или в функции. В Джаве все было сильно упрощено: тело программы, процедуры и функции заменили просто функциями. И стали называть их методами.

Курс обучения программированию на Java

- В столбце с Паскалем я вижу «тело программы», «функцию» и «процедуру», а в Java везде функции. Это как-то странно.

- Да, нам – инопланетянам - это кажется очень странным, но люди любят все унифицировать.

- В Java весь код является функциями, поэтому там даже не надо писать function, как в паскале, чтобы объявить функцию.

- Все очень просто: если строчка кода имеет вид «Тип + имя», то это либо объявление функции, либо переменной. Если после имени стоят скобочки – значит это объявление новой функции. Если скобочек нет – объявление новой переменной.

- Объявления переменных и функций в Java очень похожи, сравни:

Курс обучения программированию на Java

- И это ещё не всё. В Java функции не могут быть сами по себе. Они обязаны находиться внутри какого-то класса. Поэтому когда человекам нужно написать одну маленькую программку на Java, им нужно сначала создать классзатем написать в нем функцию mainа уж потом писать в ней свой код. Все земляне - такие чудаки.

- Сегодня ко мне зашел Диего и попросил дать тебе эти задачи, надеюсь тебе они понравятся:

1 Переставьте строки так, чтобы получился текст "Nothing personal, it's just business."

2 Объявите недостающие переменные и закоментарьте те, которые нигде не используются.

3 Напиши программу, которая выводит на экран надпись: «Слава Роботам! Убить всех человеков!» 16 раз.


9. Профессор рассказывает о пользе лекций

- Привет, Амиго!

- День добрый, профессор Нудлс.

- Я в своей жизни многое повидал. И вот что я тебе скажу…

- Иногда люди сразу разбираются в том, что им преподают, иногда нет. Все зависит от того, что именно преподавали тебе до этого, и кто. Пойми, преподаватель должен мотивировать своих студентов.

- Если студент хочет учиться, преподаватель тут бессилен.

- Именно. Студент не может превратить скучный урок или лекцию в интересный. Это может сделать только преподаватель. Преподаватель обязан делать свои уроки интересными и познавательными, а не жаловаться, что студенты не хотят учиться и не ходят на пары.

- Вот представь, что режиссер провального фильма объявляет, что в низких сборах его кинокартины виноваты зрители, которым «не интересны его фильмы, и они на них не ходят». Если тебе попадется такой режиссёр или лектор, ты их просто игнорируй – здоровее будешь.

- Спасибо за совет, профессор.

- Я просил Элли и Ришу рассказывать тебе новый материал познавательно и интересно. Но у всех бывают ошибки. Что-то они не дорассказали, что-то ты не понял. Главное, чтобы такие ситуации не уменьшали твое желание учиться. Впереди тебя ждет захватывающий мир приключений и интересной работы!

- Я буду давать тебе ссылки на статьи по этой же тематике. Если у тебя что-то не получается – посмотри их. Также возможно, что ты захочешь почитать еще что-нибудь по сложной для тебя теме. Для этого я дам тебе ссылку на наше Сообщество, (Лекция 1). Там ты найдешь дополнительную информацию в виде полезных ссылок.

«Философия Java» - шикарная книга. Каждый программист Java должен прочитать ее. Рассчитана далеко не на новичков. Но все же может очень помочь разобраться в сложной теме. Если будешь понимать, что там написано, я буду гордиться тобой.

10. Элли

- Привет, Амиго! У нас тут с Диего перерыв и мы травим анекдоты, хочешь послушать?

- Да, конечно.

Два студента (заядлых игромана) первого и пятого курса поспорили - можно ли играться во время учебы. Долго спорили и решили пойти спросить у декана - уж он то знает.
- Можно ли играться за компом целыми днями, когда готовишься к сессии? - спросил первокурсник.
- Что за вздор! Где это видано, чтобы игрались во время учебы, - возмутился декан.
- А можно ли учиться во время игры за компом? - поинтересовался пятикурсник.
- Конечно, учиться можно всегда! - похвалил декан.


11. Диего

- Моя очередь. Слушайте:

Создали ученые суперкомпьютер (ну этот комп по идее должен был на любые вопросы ответить), ну и задают значит ему вопрос:
- Есть ли Бог?
Комп подумал немного, пожужжал и отвечает:
- Недостаточно информации, подсоедините меня ко всем другим мощнейшим компам планеты.
Ну ученые повздыхали, а делать нечего, подсоединили. Опять спрашивают:
- Есть ли Бог?
Комп опять подумал пожужжал и отвечает:
- Недостаточно информации. Подсоедините меня ко всем компам планеты вообще.
Ученым трудно было это сделать, но они все-таки подсоединили суперкомп ко всем компам планеты вообще. Опять задают тот же вопрос. Комп пожужжал и говорит:
- Недостаточно информации. Подсоедините меня ко всем электронным сетям, ко всем приборам на процессорах, и т.п.
Ну ученые разбились в лепешку, но и это сделали. Опять задают:
- Есть ли Бог?
Комп:
- Теперь есть.

12. Хулио

- Привет, Амиго! Я думаю, ты уже достаточно поработал. Как насчёт заслуженного отдыха?

Отправить комментарий

Новые Старые
FL.ru – фриланс сайт удаленной работы. Поиск удаленной работы, фрилансеры.