Защо дизайнът на Go е лош за интелигентните програмисти

Защо дизайнът на Go е лош за интелигентните програмисти?

Самите програми са много прости и не са целта на писането на тази статия, но опитът с използването на Go заслужава да каже няколко думи за това. Обещанията Go да бъдете масов език за сериозен мащабируем код. Езикът е създаден в Google, където той се използва активно.

Създаден ли е GO за слаби програмисти?

Go е език който се учи лесно, толкова е просто, че въведението ще ви отнме една вечер, след което ще можете да пишете код ефективно. Книгата, която използвах за да науча “Go”, се нарича “Въведение в програмирането в Go”, която е достъпна в мрежата. Книгата, както и изходния код в Go, се чете лесно, защото има добри примери за код, разгледани в около 150 страници, които могат да бъдат прочетени на един. Първоначално, тази простота действа освежаващо, особено в света на програмирането, пълен със сложни технологии. Но накрая, рано или късно, възниква въпроса: “Това наистина ли е така?”

Google твърди, че простотата на Go е привлекателна характеристика и езикът е предназначен за максимална производителност в големите екипи, но се съмнявам в това. Има функции, които липсват или са твърде подробни. И всичко това поради липса на доверие в разработчиците, с предположението, че те не са в състояние да направят нищо правилно. Това желание за простота е съзнателно решение за развитие на езика и за да се разбере напълно какво е необходимо, трябва да се разбере мотивацията на разработчиците и това, което те са постигнали в Go.

Така че защо е създаден толкова просто? Ето няколко цитати от Роб Пайк (коментар: един от съавторите на езика Go):

Ключовият момент тук е, че нашите програмисти не са изследователи. Те обикновено са много млади, идват при нас след училище, може би са изучавали Java, C / C ++ или Python. Те не могат да разберат един специфичен език, но в същото време искаме да създават добър софтуер. Ето защо техният език трябва да е лесен за тях, да го разбират и да го учат. Той трябва да е познат, грубо казано подобен на Си. Програмистите, работещи в Google, започват по-рано кариерата си и най-вече познават процедурните езици, по-специално семейството C. Търсенето на бърза производителност на новия програмен език означава, че езикът не бива да бъде твърде радикален.
Какво? Така че Роб Пайк по същество казва, че Google разработчиците не са толкова добри, защото те са създали език за идиоти (prim.per:. Dumbed надолу), така че те да са в състояние да не правят нищо. Какъв арогантен поглед към вашите колеги? Винаги съм вярвал, че разработчиците на Google са избрани от най-ярките и най-добрите на Земята. Със сигурност те могат да се справят с нещо по-сложно?

Артефакти на прекомерна простота

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

Не е много изразително

Поради желанието за простота в Go, няма конструкции, които на други езици се възприемат като нещо естествено. В началото това може да изглежда като добра идея, но на практика се появява подробният код. Причината за това трябва да е очевидна – е необходимо разработчиците просто да прочетат кода на някой друг, но всъщност тези опростявания само увреждат четивността. В Go няма съкращения: много или нищо.

 

Дълбочина на управлението на зависимостта

Go има вградена система за зависимост, изградена на върха на популярния хостинг на VCS. Доставя се с Go инструменти са наясно с тези услуги и да изтеглите, инсталирате и събира от тях кода с един замах. Макар че е страхотно, има сериозен надзор с версиите! Да, разбира се, можете да получите изходния код от GitHub или услуги като bitbucket с инструментите си отиват, но не можете да определите версията. Отново, простота в ущърб на полезността. Не мога да разбера логиката на такова решение.

След въпроси за решаването на този проблем, екипът създал дизайна Go тема във форума, който се определя как те ще го заобиколите с. Тяхната препоръка е само един ден копирате целия хранилище на проекта му и да напусне “както е”. Какво, по дяволите, мислят те? Имаме страхотна система за контрол на версиите с отлична teggirovaniem и версийте, което създателите на движение пренебрегват и просто да копират изходния код.

 

Културен багаж от СИ

По мое мнение, в движение е разработен от хора, които са използвали С целия си живот и тези, които не искат да се опитват да използват нещо ново. Езикът може да се опише като C, с допълнителни колела (оригинални: тренировъчни колела). В момента няма нови идеи, в допълнение към подкрепа за едновременност (което, между другото, е красива) и това е жалко. Имате отличен паралелизъм в трудно използваем, скучен език.

Друг проблем е, че писклив в движение – е процедурен език (като тих ужас C). В резултат на това започнете да пишете код в процедурен стил, който се чувства архаичен и остарял. Знам, че обектно-ориентираното програмиране – това не е сребърен куршум, но би било чудесно да мога да абстрактен подробностите във видовете и да предостави капсулиране.

 

Простота за собствена полза

Go беше проектиран да бъде прост и той успя да постигне тази цел. Беше написана за слаби програмисти, използвайки стария език като подготовка. Той се доставя пълен с прости инструменти за извършване на прости неща. Лесно е да се чете и просто да се използва.

Това е изключително подробно, неекспресивно и лошо за интелигентните програмисти.

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *