Казах на моя брат Тод, който минава от хардуер към програмиране, че следващата голяма революция ще бъде в генното инженерство.
Ще има микроорганизми проектирани да произвеждат храна, гориво или пластмаси; те ще прочистят замърсяването и изобщо ще позволи манипулирането в реалния свят за част от днешната цена. Аз претендирах, че революцията в генното инженерство ще затъмни компютърната революция.
После разбрах, че правя грешка обща за писателите-научни фантасти: загубвайки се в технологията (което е лесно в научната фантастика разбира се). Опитният писател знае че историята никога не е за вещите; тя е за хората. Генетиката ще има много голямо отражение върху нашия живот, но аз не съм много сигурен че ще омаловажи компютърната революция – или най-малкото информационната революция. Информацията е в говоренето един на друг: да, колите и обущата и особено генетично създадените лекарства са много важни, но в последна сметка са само салтанати. Истинско значение има само нашият начин за отнасяне към света. А толкова много от него е комуникация.
Тази книга е точно такъв случай. Повечето хора мислеха, че съм много щедър или малко луд да слагам цялата книга в Мрежата. “Защо да я купуват тогава?” питаха те. Ако бях по-консервативен нямаше да го направя, но аз наистина не искам да правя книги по стария начин. Не знаех какво ще стане, но това се оказа най-умното нещо, което някога съм правил с книга.
Хората взеха да пращат корекции. Това беше забележителен процес, защото те бяха надникнали във всеки ъгъл и бяха хванали както технически, така и стилни грешки и аз бях в състояние да поправя много грешки, които иначе биха останали незабелязани. Хората бяха просто ужасни с това нещо, често казвайки “Сега, не го приемай като критика” и ми даваха след това колекция от грешки, които не бих открил иначе, сигурен съм. Чувствам, че това беше вид групова обработка и това правеше книгата специална.
След това взех да чувам “Добре, че сте я сложили в Мрежата, но аз искам реално отпечатана и подвързана книга, от истински издател.” Аз много се трудих да я направя печатуема от всеки в подходящ формат, но това не намали поръчките за книги в печатницата. Повечето хора не обичат да четат цялата книга от екран и да им се моткат снопове хартии, без значение колко хубаво отпечатани (плюс това не толкова евтини в смисъл на тонер за лазерен принтер, мисля). Изглежда, че компютърната революция няма да изтласка печатарите от бизнеса, най-после. Обаче един студент вмeтна, че за в бъдеще ще трябва книгите да се публикуват в Мрежата първо, а после да се печатат, ако има достатъчен интерес. В момента по-голямата част от всички видове книги са финансов провал и може би новият начин ще направи тази индустрия по-печеливша.
Тази книга ме просвети и по друг начин. Отначало смятах Java за “просто още един език за програмиране,” какъвто в много отношения той е. Но когато с течение на времето го проучих по-дълбоко, аз започнах да разбирам, че основното намерение е различно от това на всички езици, които някога бях виждал.
Програмирането е на път да се справи със сложността: сложността на проблема, който решавате лежи върху сложността на машината, на която го решавате. Поради тази сложност повечето от програмните проекти не успяват. Все още никой от програмните езици които съм чувал не си поставя за основна цел да се справи със сложността. Разбира се, много от главните решения са вземани като е имана предвид сложността, но в някоя точка винаги са се появявали съображения, които са ставали основни. Обратно, тези “други съображения” са довеждали до това програмистите да разбиват стена с глава. Например, С++ трябваше да бъде ефикасен и обратно съвместим със C (за да позволи лесна миграция на С програмисти). Това бяха много полезни цели и на тях се дължи немалка част от успеха на С++, но те също доведоха до повишена сложност и доведоха до това някои проекти да не могат да бъдат завършени (разбира се, би могло да се обвиняват програмистите и управлението на проектите, но ако езикът може да помогне срещу грешките с автоматичното им прихващане, защо да не го прави?). Като друг пример, Visual Basic (VB) беше свързан с Бейсик, който не беше проектиран като разширяем език, така че всичките разширения доведоха до ужасен и неуправляем синтаксис. От друга страна, C++, VB и други езици като Smalltalk имаха като цел на част от усилията при проектирането си справяне със сложността и това ги направи забележително ефективни при решаване на някои видове проблеми.
Това което ме впечатли най-много когато започнах да разбирам езика беше, че като неотменна цел стоеше да се опростят нещата за програмиста. Като да кажем “не се интересуваме от нищо друго освен от намаляване на времето и усилията за получаване на хубав код.” В ранните дни това бе резултирало в не много голяма бързина на кода (въпреки многото обещания за бързината, която Java щял да достигне някой ден) но също доведе до вълнуващо намаление на времето за разработка; половина или по-малко от това за еквивалентна програма на C++. Този резултата сам по себе си може да спести чудесни количества време и пари, но Java не спира тук. Тя продължава с обхващането на други сложни задачи, които са станали важни като многонишково изпълнение и мрежово програмиране, чрез библиотеки и черти на езика, които правят тези задачи тривиални. И накрая той се заема с проблеми с наистина голяма сложност: програми за смесени платформи, динамична промяна на кода и даже сигурността, всеки от които лежи в спектъра на сложността между “пречка” и “спиращ шоуто.” Така напук на проблемите с бързината, които видяхме, обещанието на Java е зашеметяващо: той може да ни направи значително по-ефективни програмисти.
Едно от местата, където виждам най-голяма възможност за влияние е Мрежата. Мрежовото програмиране винаги е било трудно, а Java го прави лесно (и разработчиците се трудят за това непрекъснато). Мрежовото програмиране е чрез което ние можем да комуникираме помежду си по-лесно и евтино отколкото да се обадим по телефона (само електронната поща революционизира много видове бизнес). Като си говорим повече започват да се случват вълнуващи неща, може би по-вълнуващи даже от обещанията на генната инженерия.
Във всеки случай: създавайки програмите, работейки в екипи за създаване на програми, изграждайки потребителски интерфейси така, че програмите да може да комуникират с потребителя, изпълнявайки програмите на различни типове машини и лесно създавайки програми за комуникация по Мрежата – Java увеличава честотната лента досъпна за общуване между хората. И аз мисля че резултатите от революцията в комуникациите няма да се проявят в преминаване на големи количества битове наоколо. Ние трябва да видим истинската революция понеже ние всички ще можем да си говорим лесно – всеки със всеки, но също на групи или като цяла планета. Слушал съм че следващата революция ще е формирането на глобален разум съставен от достатъчно много хора и достатъчно много връзка между тях. Java може да подбуди или да не подбуди този процес, но само възможността за това ме кара да мисля, че правя нещо ценно, опитвайки се тук да уча на Java.
Сподели с приятели: |