Аз работя по проект, който обединява книга и интерактивен "Кей Horstmann за книги и не само
![Работа по проект, който обединява книга и интерактивен Аз работя по проект, който обединява книга и интерактивен](https://webp.images-on-off.com/25/334/434x223_vdxxqs2datxwadn696gg.webp)
Има огромно разнообразие от книги за Java - и има редица "завинаги" книги за Java. Те включват «ядро Java» (в българското издание на «Java. Библиотека професионален") Кей Horstmann и Гери Kornella. Тя се появява само година по-късно, на самия език, веднага се превръща в един от основните източници на информация по темата. И за следващите двадесет години е стоял в продължение на десет издания, съвестно, допълнени с информация за нови версии на Java, така че той е нараснал повече от едно поколение на Java разработчици.
Кей все още следи отблизо новостите Java, а през есента на конференцията в Санкт Петербург Joker казва. че в Java 9 добро. И в очакване на пристигането си, ние го попита за много неща: за работата на книгата и за това, дали те измести онлайн курсове, както и за разликите между академичния свят на индустрията и бъдещето на Java.
- Работата по една книга в продължение на десетилетия - какво е това? Има ли "Legacy" е налице, когато фрагмент от почувствах остаряла, а просто "се вдигне и да се хвърлят", че е невъзможно? Изглежда, ако актуализацията на книгата на рефакториране? И това води до там преди нещо написано години, усещането за "колко глупави писах?"
И да, работата по ново издание се чувства като рефакториране. В много случаи, нов начин да се направи нещо, за да се направят и други подходи остарели, и аз трябва да се справят със стотици код примери. Обичам да използвам новите функции във всички случаи, в които те са подходящи за читателите не се появиха объркана смесица от старо и ново. Обикновено случай - оператор диамант, той просто е необходимо да се намери думи като «нов ... <.>(.) ". Но когато се добавя към изразяване ламбда, аз трябваше да пренапише повече от половината от примерните програми, понякога силно ги реорганизиране.
Ние не искахме да «ядро Java» stouter до три тома, така че във всеки издание някои неща са отстранени. Сред тях - информация за грешки в по-старите версии, които вече никой не му пука, "заобикаляне", които вече не са актуални поради подобрения в езика, както и голям мащаб "косят" на API. След като имахме много подробно описание на CORBA, и се отървете от него е доста лесно решение. Когато отстранен описание на ИС, някои читатели бяха разтревожени, но слушат, когато е бил на някой последен път тя не се използва в примера с играчка? И сега, избран след трудно решение: какво да правим с Swing?
Понякога текстът се промъква техническа грешка, а аз съм списък с грешки виждал, така че читателите могат да подават сигнали за тях. Аз съм много сериозно се стигне до това "бъг доклади" за грешката не живеят по-дълго от едно издание. За щастие, положението е "колко глупави бях", се среща рядко, но понякога моя гледна точка се развива с течение на времето. Например, когато вложените класове, аз съм в големи подробности, за да обясни как изземването на локални променливи Резултатите от декомпилацията чрез javap. По-късно, аз мислех за това. Обясних подробно, като, например, е технически работи извиквания на методи? Не, и читателите не се нуждаят от такива подробности. На практика програмисти са напълно подготвени да се доверят на компилатора, че тя е в състояние да разбере и да оспори метода и с превземането локалните променливи, така че аз се отстраняват излишните части.
- Макар че някои от книгите се хареса на тясна аудитория, «ядро Java» отварят всякакви хора, които имат познания и опит е много по-различно. Искате да възникнат трудности, когато пишете "за всички"? Това помага да се справят с тях?
- Трудности имат и тя е неизбежна, че не можем да очакваме разбиране във всички напреднали материали от новак читателя. Аз очаквам, че читателят, който е само учене обектно-ориентираното програмиране, ще се борави внимателно с наследство и интерфейси, и размисъл или модули само бегъл погледи, докато експертът ще правят точно обратното. С ръководителите на API-лесно, не е естествено за читателите да пропуснете тези глави, че те не се интересуват.
В днешно време, малко хора четат книги за програмиране от корица до корица. Много от моите читатели използват Safari Books, които току-що отвори страницата, посветена на конкретна тема. И аз структурирана «Нетърпеливи» поредица от книги, така че материалът може да бъде лесно разбираем в тази форма, без постоянни препратки към други сайтове, на една и съща книга.
- Когато пиша за Java в продължение на много години и vdaoshsya подробно дали има смисъл от "колко на Java е направено напълно погрешно"? Опитахме се има нещо по-добро?
- Разбира се, когато става въпрос за такава голяма и сложна платформа като Java, има много неща, че нещо не е наред. Но само в редки случаи, нещо, което е ужасно погрешно, например, е съществуването на примитивни видове, които трябва да са вътрешен въпрос на виртуалната машина. (И аз се надявам, че новата версия на Java е правилен и в бъдеще.)
Но, разбира се, има много малки дразнители. Например, защо API отне двадесет години да ни даде метод, за да прочетете поток в масив от байтове? Защо API за Unicode толкова лошо? Аз да ви изброя десетки други.
Чрез sozhelaniyu, те не са толкова лесно да се определи. В други проекти opensorsnyh някой просто предполагат, ще бъде нещо по-добро може да е дискусия, финес се случи, и след това щели да бъдат направени промени, ако не е имало никакви силни възражения. И в случай на Java обратното. Имаме нужда от средства, за да насърчават активно всяка промяна, и че той е преминал през регулаторната рамка. Разбира се, от това има полза, това означава, че вашата програма Java 1.0 отличен шанс успешно да се съберат. Но той също така възпира всеки от бяха направени никакви промени.
Като пример, аз веднъж предполага, че е необходимо да бъде в състояние да стартирате програмата, обадете се на строителя (с параметъра String [] или без аргументи) на класа, определен от командния ред, ако класът съдържа метод основната. Аз дори го изпълни - изпълнение на код в ВМ не е толкова трудно. Защо да го правя до това нещо? Защото това ще е божи дар за студенти и prepodateley, които не би трябвало да се справят с публично статично невалидни основни в първата лекция. ще изглежда така «Hello, World!":
Втори пилотна програма веднага ще се потопите в обекти без да се притеснявате за «статичен».
Не е имало риск от грешки назад съвместимост, тъй като преди това не можа да стартира такъв клас.
Беше ми скромно предложение е одобрено? Далеч от нея. То бе отхвърлено като "твърде сложно" и "способността да застраши обратната съвместимост."
Но се, че тя може, с течение на времето, много от най-дразнещите черти на API се коригира. Може би се дължи на факта, че хората в Oracle те са досадни точно като нас.
- Чували ли сте от Java-развитие, че вашите книги не са само ги научиха да Java, но и са повлияли своя стил на програмиране?
Налице е изключение. Написах книга за Скала, където имам доста ясна гледна точка: вижте Java-програмист, който не иска да се откажат от обектно-ориентиран и се премести в чисто функционално програмиране. Тези читатели, които споделят моя гледна точка, това ми хареса. За тези, които не споделят - не много.
Това е опасността от книгата с лично мнение. Ако това не е толкова вярно и убедително, че тя се превръща мнението на мнозинството, а след това се ограничава собствената си публика. В случай на книги «ядро Java» казвам на читателя как да използвате Java-ефективно, но освен това, не проповядва всяка конкретна методология.
![Работа по проект, който обединява книга и интерактивен Аз работя по проект, който обединява книга и интерактивен](https://webp.images-on-off.com/25/334/384x499_irzexgee3bntk7cjc11a.webp)
- Вие на уебсайта под «запомнящи се цитати» оферта, дразнят Хърбърт Шилдт. Заради вашите книги за Java се конкурират, аз искам да знам - това е просто шега, или имате съперничество. )
- С ръце - не. Никога не съм го срещал. Аз дори не знам дали той съществува. Може би това е кодово име за програма с изкуствен интелект. Шегувам се, Herb :-) аз просто харесва цитатът.
- Ти участва в създаването на Интро на курса за Java програмиране на Udacity. Смятате ли, че бъдещето на преподаване програмиране за онлайн курсове? Дали книги стават все по-малко значение? Какъв съвет имате на първо място на лицето, което иска да стане програмист: книга или MOOC?
- Имате ли опит в работата в университетите, както и в стартирането, което е, вие знаете, и академичния свят и индустрията. Какъв е ключът между тези контексти? Колко далеч тези два свята един от друг?
- Тук лежи широко разпространено недоразумение. Студентите често питат нещо като: "Защо трябва да преподават теорията на автоматите? Това, което наистина се нуждаем, е на курс за AngularJS ».
Аз не споря с факта, че ако един студент за конкретен проект се нуждае от angularjs, че той трябва да научи AngularJS. Но тъй като университетски курс. Университет е добре да научите неща, които ще продължат да бъдат от значение 20 години по-късно. И да се науча да се учи. Така че след 20 години, когато един бивш студент ще трябва да се научат рамките XYZ, ще имат умения и фон е бързо да овладее сам.
Някои хора вярват, че университетите отиват твърде далеч с преподаване на безполезен материал, и те са с четиригодишната си програма липсва гъвкавост. Ето защо има всички тези "хакерски академия» и «nanodegree». Самият аз се сещам някои начини за модернизиране на учебната програма по компютърни науки, и аз също да признаем, че някои от тези методи няма да бъдат изпълнени поради институционални бариери. Но нетрадиционни образователни програми отиват в другата крайност, като не предоставя достатъчно основни познания. Те също така се различава от университети в друг начин: те само трябва да се фокусира върху най-мотивираните хора в състояние да запълни много от себе си пропуски.
Друга голяма разлика между университета и работата в бранша е, че академичните изследвания, фокусирани върху оригиналност и работа в индустрията - на повторяемост. В университетите, малко оценено качеството на кода, с изключение на хора, които изучават софтуерно инженерство. Може би прекалено много се опират в оригинални изследвания в университетите. А преди няколко години работих в малка швейцарска образователна институция, където преподаватели бяха отличени за работата им с местни компании. Мислех, че е добра идея.
- И тъй като от разликата на двата свята не е толкова, че добрите идеи от академичния свят, които биха могли да бъдат полезни в индустрията просто не стигнем до там?
- Не знам, ако това се случи с индустрията пропусна много академична работа с използването на приложението. Много от софтуерните компании имат служители с научни степени, е много добре запознати с научната литература.
Например, погледнете безпилотни превозни средства. Той стартира в университетите, а след това съвсем естествено се мести в индустрията.
Или, в света на езиците за програмиране, погледнете в колекцията на боклука. Това през годините е бил тема на научните изследвания, но когато тя е подходяща за промишлена среда той бързо бе взето в експлоатация. Така че аз не съм особено притеснен за безценни интелектуални тайните, скрити в кула от слонова кост.
- Ти научи CS в света - в САЩ, Швейцария, Виетнам и Макао. На какво се дължи такова разпространение?
- Просто обичам да пътувам.
- И по отношение на работата си, ако има някаква съществена разлика между двете страни, или компютърна наука и компютърни науки в Макао?
- Навсякъде едни и същи. Където и да са били и най-добрите студенти, и не е твърде важна. Е, виетнамските студенти не са свикнали да разчитат на собствената си преценка. Те постоянно ме питат най-малките въпроси за това как те трябва да действат, и аз винаги се отговори, че те са много умни (те наистина са такива, те са били избрани от 1%, в резултат на училище изпит), и те трябва да формират собствено мнение. Мисля, че ги е научил повече, отколкото който и да е техническа информация, че давам лекции.
Мисля, че сме по компютърни науки, а късмет с областта, в която постижения може да се оцени напълно обективно, и хора от различни места си сътрудничат успешно. Когато за Силиконовата долина се каже, че е налице меритокрацията, това е до известна степен е вярно. Разбира се, само определен - Всички сме чували истории за хора, които не предоставят равни възможности да се докаже като програмист. Но по компютърни науки това е много по-добре, отколкото в други райони, където по-голямата част от парите, получени от хора от една и съща страна.
- Уикипедия твърди, че в продължение на няколко години сте използвали в книгите на собствения си стил на отстъп, а след това я изоставили. Защо ние започнахме, спря, и защо?
Историята е. В случай на C, ние имаме KR стил и Allman стил:
Това, което искаме - да се спести място, или да приведе скоби? И какво, ако сме прави и че и друг? Тук също се предлага в "Horstmann стил":
Хората не са го харесали. За да направите това, не е имало забележим рационална причина; пиша толкова просто изглежда странно. В крайна сметка, аз се отказах, защото стилът е имало подкрепа от tulinga. Играта не е струва свещ.
- Вие пишете за Java в продължение на десетилетия и са видели как тя се е променило с течение на времето. Какво мислите за бъдещето на Java? Той е преминал своя връх и ще загубят бавно популярност? Или все още да дойде, и на младите-езиците JVM като Scala и Kotlin помогне на цялата екосистема?
Виждам и много ентусиазъм около Python в области като наука данни. Няма причина за съответната библиотека не може да бъде написана на Java, но те не са написани на него. И на Kotlin те също не пиша. В Scala има видима площ, особено Spark.