С Днём рождения, Microsoft
Как всё начиналось: Microsoft
В середине 1980 года IBM планировала выпуск первой модели массового персонального компьютера IBM PC, и находясь в поисках подходящей ОС, предложила Microsoft написать интерпретатор BASIC. В рамках сделки было необходимо представить приложение, для демонстрации его возможностей. Именно тогда Билл Гейтс создал свою первую компьютерную игру Donkey («Ослик»), в которой нужно ездить на машине и уворачиваться от ослов, вышедших на дорогу.
На конференции TechEd 2001 Билл поделился воспоминаниями о создании игры:
Мы сидели в маленькой комнатке с Нилом (программист, один из первых сотрудников компании Microsoft) над прототипом IBM PC. На часах было 4 утра. IBM поставили условие, что мы можем работать только в закрытой на замок помещении, поэтому температура там была близка к 38 градусам, но мы продолжали работать над приложением, чтобы показать на что способен BASIC, встроенный в IBM PC. Так появилась DONKEY.BAS. Это было очень волнительное время. Нам нужно было быть на шаг впереди, чтобы показать им, как это будет выглядеть.
Наверняка вы знаете, какое завершение у этой истории. В прошлом году исполнилось 35 лет с момента выпуска первой модели IBM PC с операционной системой PC-DOS 1.0 (MS-DOS) и интерпретатором BASIC. Примерно в это время на GitHub появился исходный код аналога игры от Джеффа Этвуда.
940 REM The IBM Personal Computer Donkey
950 REM Version 1.10 (C)Copyright IBM Corp 1981, 1982
960 REM Licensed Material - Program Property of IBM
975 DEF SEG: POKE 106,0
980 SAMPLES$="NO"
990 GOTO 1010
1000 SAMPLES$="YES"
1010 KEY OFF:SCREEN 0,1:COLOR 15,0,0:WIDTH 40:CLS:LOCATE 5,19:PRINT "IBM"
1020 LOCATE 7,12,0:PRINT "Personal Computer"
1030 COLOR 10,0:LOCATE 10,9,0:PRINT CHR$(213)+STRING$(21,205)+CHR$(184)
1040 LOCATE 11,9,0:PRINT CHR$(179)+" DONKEY "+CHR$(179)
1050 LOCATE 12,9,0:PRINT CHR$(179)+STRING$(21,32)+CHR$(179)
1060 LOCATE 13,9,0:PRINT CHR$(179)+" Version 1.1O "+CHR$(179)
1070 LOCATE 14,9,0:PRINT CHR$(212)+STRING$(21,205)+CHR$(190)
1080 COLOR 15,0:LOCATE 17,4,0:PRINT "(C) Copyright IBM Corp 1981, 1982"
1090 COLOR 14,0:LOCATE 23,7,0:PRINT "Press space bar to continue"
1100 IF INKEY$<>"" THEN GOTO 1100
1110 CMD$ = INKEY$
1120 IF CMD$ = "" THEN GOTO 1110
1130 IF CMD$ = CHR$(27) THEN GOTO 1298
1140 IF CMD$ = " " THEN GOTO 1160
1150 GOTO 1110
1160 DEF SEG=0
1170 IF (PEEK(&H410) AND &H30)<>&H30 THEN DEF SEG:GOTO 1291
1180 WIDTH 80:CLS:LOCATE 3,1
1190 PRINT "HOLD IT!"
1200 PRINT "YOU'RE NOT USING THE COLOR/GRAPHICS MONITOR ADAPTER!"
1210 PRINT "THIS PROGRAM USES GRAPHICS AND REQUIRES THAT ADAPTER."
1220 PRINT "PRESS THE SPACE BAR TO CONTINUE."
1230 DEF SEG
1240 IF INKEY$<>"" THEN GOTO 1240
1250 CMD$ = INKEY$
1260 IF CMD$ = "" THEN GOTO 1250
1270 IF CMD$ = CHR$(27) THEN GOTO 1298
1280 IF CMD$ = " " THEN GOTO 1298
1290 GOTO 1250
1291 KEY OFF
1292 ON ERROR GOTO 1295
1293 PLAY "p16"
1294 GOTO 1300
1295 COLOR 31,0,0
1296 PRINT "THIS PROGRAM REQUIRES ADVANCED BASIC -- USE COMMAND 'BASICA'":COLOR 15,0,0:FOR I=1 TO 9000:NEXT: RESUME 1298
1298 ON ERROR GOTO 0
1299 SCREEN 0,1:IF SAMPLES$="YES" THEN CHAIN"samples",1000 ELSE COLOR 7,0,0:CLS:END
1300 REM
1410 COLOR 0
1420 DEFINT A-Y
1440 SCREEN 1,0:COLOR 8,1
1450 DIM Q%(500)
1460 DIM D1%(150),D2%(150),C1%(200),C2%(200)
1470 DIM DNK%(300)
1480 GOSUB 1940
1490 GOSUB 1780
1500 CLS
1510 DIM B%(300)
1520 FOR I=2 TO 300:B%(I)=-16384+192:NEXT
1530 B%(0)=2:B%(1)=193
1540 REM
1550 CX=110:CLS
1590 LINE (0,0)-(305,199),,B
1600 LINE (6,6)-(97,195),1,BF
1610 LINE (183,6)-(305,195),1,BF
1620 LOCATE 3,5:PRINT "Donkey"
1630 LOCATE 3,29:PRINT "Driver"
1631 LOCATE 19,25:PRINT"Press Space ";
1632 LOCATE 20,25:PRINT"Bar to switch";
1633 LOCATE 21,25:PRINT"lanes ";
1635 LOCATE 23,25:PRINT"Press ESC ";
1636 LOCATE 24,25:PRINT"to exit ";
1640 FOR Y=4 TO 199 STEP 20:LINE(140,Y)-(140,Y+10):NEXT
1650 CY=105:CX=105
1660 LINE (100,0)-(100,199):LINE(180,0)-(180,199)
1670 LOCATE 5,6:PRINT SD:LOCATE 5,31:PRINT SM
1680 CY=CY-4:IF CY<60 THEN 2230
1690 PUT (CX,CY),CAR%,PRESET
1700 DX=105+42*INT(RND*2)
1710 FOR Y=(RND*-4)*8 TO 124 STEP 6
1720 SOUND 20000,1
1730 A$=INKEY$:IF A$=CHR$(27) THEN 1298 ELSE POKE 106,0:IF LEN(A$)>0 THEN LINE (CX,CY)-(CX+28,CY+44),0,BF:CX=252-CX:PUT (CX,CY),CAR%,PRESET:SOUND 200,1
1740 IF Y=>3 THEN PUT (DX,Y),DNK%,PSET
1750 IF CX=DX AND Y+25>=CY THEN 2060
1760 IF Y AND 3 THEN PUT (140,6),B%
1770 NEXT:LINE (DX,124)-(DX+32,149),0,BF:GOTO 1670
1780 CLS
1790 DRAW "S8C3"
1800 DRAW"BM12,1r3m+1,3d2R1ND2u1r2d4l2u1l1"
1810 DRAW"d7R1nd2u2r3d6l3u2l1d3m-1,1l3"
1820 DRAW"m-1,-1u3l1d2l3u6r3d2nd2r1u7l1d1l2"
1830 DRAW"u4r2d1nd2R1U2"
1840 DRAW"M+1,-3"
1850 DRAW"BD10D2R3U2M-1,-1L1M-1,1"
1860 DRAW"BD3D1R1U1L1BR2R1D1L1U1
1870 DRAW"BD2BL2D1R1U1L1BR2R1D1L1U1
1880 DRAW"BD2BL2D1R1U1L1BR2R1D1L1U1
1890 LINE(0,0)-(40,60),,B
1900 PAINT (1,1)
1910 DIM CAR%(900)
1920 GET(1,1)-(29,45),CAR%
1930 RETURN
1940 CLS
1950 DRAW"S08"
1960 DRAW "BM14,18"
1970 DRAW"M+2,-4R8M+1,-1U1M+1,+1M+2,-1
1980 DRAW"M-1,1M+1,3M-1,1M-1,-2M-1,2"
1990 DRAW"D3L1U3M-1,1D2L1U2L3D2L1U2M-1,-1"
2000 DRAW"D3L1U5M-2,3U1"
2010 PAINT (21,14),3
2020 PRESET (37,10):PRESET (40,10)
2030 PRESET (37,11):PRESET (40,11)
2040 GET (13,0)-(45,25),DNK%
2050 RETURN
2060 SD=SD+1:LOCATE 14,6:PRINT "BOOM!"
2070 GET (DX,Y)-(DX+16,Y+25),D1%
2080 D1X=DX:D1Y=Y:D2X=DX+17
2090 GET (DX+17,Y)-(DX+31,Y+25),D2%
2100 GET (CX,CY)-(CX+14,CY+44),C1%
2110 GET (CX+15,CY)-(CX+28,CY+44),C2%
2120 C1X=CX:C1Y=CY:C2X=CX+15
2130 FOR P=6 TO 0 STEP -1:Z=1/(2^P):Z1=1-Z
2140 PUT (C1X,C1Y),C1%:PUT(C2X,C1Y),C2%
2150 PUT (D1X,D1Y),D1%:PUT(D2X,D1Y),D2%
2160 C1X=CX*Z1:D1Y=Y*Z1:C2X=C2X+(291-C2X)*Z
2170 D1X=DX*Z1:C1Y=C1Y+(155-C1Y)*Z:D2X=D2X+(294-D2X)*Z
2180 PUT (C1X,C1Y),C1%:PUT(C2X,C1Y),C2%
2190 PUT (D1X,D1Y),D1%:PUT(D2X,D1Y),D2%
2200 SOUND 37+RND*200,4:NEXT
2210 FOR Y=1 TO 2000:NEXT
2220 CLS:GOTO 1540
2230 SM=SM+1:LOCATE 7,25:PRINT "Donkey loses!"
2240 FOR Y=1 TO 1000:NEXT
2250 CLS:GOTO 1540
В 2012 году под iOS был выпущен аналог игры, а последняя версия DONKEY.APP by Johnny Ixe появилась 13 января 2017 года.
8 историй о том, как всё начиналось
Прочитав историю Билла Гейтса и вдохновившись ею, стало интересно, что мотивирует людей связывать свою жизнь с IT, поэтому мы провели небольшой флэшмоб в группе Microsoft Developer и попросили рассказать свои истории с хэштегом #когдаябыл. Ниже вы найдёте самые интересные из них, а также истории от технологических евангелистов Microsoft.
Александр Белоцерковский, Технологический евангелист, Microsoft
Я начал в 15 лет с первой программы на Perl, купив книгу рецептов на рынке. Написав и запустив все примеры, перешёл на HTML и CSS, где пытался применить полученные от Perl знания на практике. Не получилось… И следующие два года жил жизнью, в которой из экспериментов было изучение реестра в Windows 98 и выше, с последующей переустановкой.В 18 лет вернулся в строй: получил в университете знания и практику на Java, а также понял, почему знания Perl не помогли с HTML/CSS. Где-то между 18 и 25 был Haskell. В 25 закончил активную работу с Java и перешёл на .NET, параллельно получив многолетний опыт администрирования суперкомпьютерного кластера под SLES. В данный момент продолжаю изыскания в качестве разработчика, люблю экспериментировать со всякими классными штуками типа Project Orleans, Service Fabric, Akka и иже с ними, а также имею свой уютный домашний SLES.
Алексей Плотников, Администратор, Фабрика Документов
#когдаябыл учеником 9 класса у меня не было ни компьютера, ни даже школьного предмета под названием «информатика», зато был предмет «черчение», который вёл тот же учитель. И вот, после уроков под предлогом «улучшить навыки черчения», я приходил в кабинет информатики и, в промежутках между вычерчиванием линий, заглядывал в монитор старенького 286 го, где мелькал крутой на тот момент Wolfenstein 3D.Но интерес мой, в отличии от многих, не ограничивался только играми. Я интересовался и такими банальными вещами, как набор текста и распечатка, чем и заслужил расположение учителя и особый доступ к ПК. По иронии судьбы, когда я перешел в 10 класс и наконец-то мог официально находиться за компьютером на уроках информатики, произошло увольнение учителя и предмет был отменен.
Я решил брать быка за рога и наплёл директору о своих супер-навыках и желании выполнять поручения по набору текстов. Проверочная работа хоть и отняла у меня несколько часов, но всё же убедила директора в моей полезности. Так я получил полный доступ на последующие два года как к кабинету информатики, так и ко всей его книжной коллекции.
Самой интересной, на мой взгляд, оказалась ещё советская книга о программировании на QBasic. Я настолько увлекся этой книгой, что писал программы дома в тетрадку, не имея возможности тут же проверить правильность моего кода. Совсем скоро мою сельскую школу настигла цивилизация в лице Pentium с Windows 2000. Но, самым интересным оказался MS Office со встроенным редактором Visual Basic. Оценив всю прелесть визуального программирования, я окончательно влюбился как в язык, так и в технологии Microsoft.
Александр Шаповал, Технологический евангелист, Microsoft
В 2003 году состоялся мой первый рабочий день в компании Microsoft. В московском офисе меня сфотографировали, нагрузили информацией, дали презу, которую надо было прочитать на следующий день, и отправили обратно в Питер. Сидим в офисе. Вдруг коллега рядом начинает давиться от смеха. Показывает мне главную страницу веб-сайта одного из ведущих партнеров MS в Питере. В центре страницы красивый баннер и информация о совместной промо-акции. А справа колонка с рубрикой «Анекдот дня»: «Объявление: «Ищу поклонников Microsoft. Найду — убью!»Так я понял, что партнеры — наше все. :) А это — один из сувениров от партнера на Новый год.
Анастасия Концельгогер, .Net-разработчик, Арсис
Самым-самым была все-таки Энциклопедия профессора Фортрана, лет в 5 —увлекательнейшая книга. :)А вот #когдаябыл 'а в 10й классе, мне понравилось решать задачки на Pascal по бесконечным суммам. Потом ушел год на то, чтобы убедить родителей, что быть программистом лучше, чем экономистом. :) В университете надо было объяснять, что пришла я на специальность сознательно, а не случайно.
Теперь же на каждом собеседовании минут 10 уходит на то, чтобы объяснить, что да, я разработчик, да, точно не тестировщик, да, мне точно нравится программировать. :) И нет, я не ошиблась вакансией. :) Но, минут через 10 почти все привыкают.
Мария Горелкина, Технологический евангелист, Microsoft
У меня всегда была ярко выраженная предрасположенность к гуманитарным наукам. Решение пойти в противоположную сферу было осознанным. Хотелось раскачать другую, «темную сторону» своих возможностей, пошла учиться, а потом и работать в IT. Несмотря на распространенный стереотип, именно опыт первой работы в поддержке вспоминаю с теплотой до сих пор. Хотя в самом начале было тяжело, и, не скажу, что здесь в Microsoft стало легче. :) Но, мне очень нравится тянуться за лучшими, вгрызаться в стену собственного непонимания, хотя порой и приходится балансировать на грани.
Георгий Перевозчиков, Soft Developer, фриланс
#когдаябыл 14–15-летним, очень любил погонять в Механоиды. Но, проходить всю компанию мне не хотелось, и тогда я захотел взломать игру. После пары месяцев упорного изучения Turbo Pascal по старым школьным библиотечным книжкам я-таки достиг успеха.С тех пор прошло уже 6 лет, я изучил другие языки, написал множество строк кода, а моя страсть к программированию только увеличилась. Но? я по-прежнему люблю как нибудь сесть за Pascal и написать что-нибудь извращенное. :)
Артём, Full Stack Web-программист, Synhro
Начало пути? У всех оно безобидное и странное… Смотря на первый опыт, хочется себя ударить. Но, вообще, как по мне, если ты хочешь ударить себя годовой давности, значит у тебя все хорошо. :)Мой опыт программирования начался #когдаябыл в университете и автоматизировал расчеты по Электротехнике в Excel. В методичке был представлен алгоритм для человека, где нужно переставлять ячейки в таблице (не помню уже) по определенным правилам и получить результат. Мой скрипт перемешивал эти ячейки по алгоритму и обратно. Переменные были со стандартными названия, по типу a, b, c. Код лапша, без комментариев… Это было ужасно.
Потом это всё переросло увлечение. Я почти полностью автоматизировал расчеты по Электротехнике: где формулы были слишком тяжелые для восприятия в Excel, писал их в VBA. Я был очень горд, ибо этим пользовались мои одногруппники. Некоторые, вдохновленные подобной автоматизацией, тоже начали автоматизировать некоторые расчеты по другим дисциплинам. После даже заинтересовались C++. Мы начали не решать курсовые, а автоматизировать. Это было увлекательно. Мы прокачивались, развлекались и при этом не отставали от основного учебного процесса. В итоге даже начали сильно обгонять других, потому что нам не нужно было руками переписывать тонны расчетов. Было достаточно изменить некоторые данные и нажать кнопку «Считать».
Потом я начал участвовать в НИР как программист, поработал в ИКИ РАН, после пробовался в стартапы по финтеху, начал увлекаться Deep Learning. В МАИ начался проект, где используется (будет использоваться) Анализ изображений и я этим буду заниматься. На данный момент работаю в Synhro, делаем архив. Я — Full Stack Web-программист (по сути так), пишу сервисы с использованием ASP.NET Core (очень не хватает SignalR). Активно пользуюсь инструментами Microsoft и жалею только о том. что в дне всего 24 часа, приходится выбирать направление своей деятельности и иногда спать… Кто придумал такую глупость?
Стас Павлов, Технологический евангелист, Microsoft
То, что мне нравится заниматься разработкой программ, я понял ещё в школе, когда проходил практику в учебном комбинате на БК-шках и УК НЦ. Там я написал свою первую программу на Бейсике и понял, что мне это нравится.Потом практикумы в университете на Фортране и C++ и, небольшой опыт разработки программ на заказ и, наконец-то первая моя работа программистом в интернет-магазине Библион.
Присоединяйтесь к обсуждению и делитесь своими историями в комментариях. :)