Размисли и…

 Без категория
фев. 172008
 

Една интересна статия в блога на Andrew Clarke: Data modelling and other dying arts

Искам да се хвана за следният пасаж

Of course people are doing system design. There’s lots of design about but I would guess that it all happens in UML. So the majority of logical data modelling these days produces class models rather than ERDs. The physical database design stage is much more likely to consist of ORM than mapping entities to tables. Now that’s not the sort of party you invite a DBA to, because you just know they’re going to glower in the corner, drinking heavily and muttering to themselves. So the mappings and the database design will be done by middle-tier developers. Our communal prejudices tell us this is unlikely to produce a correct and peformant database design, not least because projects which use such an approach tend to make a fetish of database agnosticism and platform independence. So in the long run we might see a resurgence in data modelling, as part of the tool set for rescuing poorly performing class models.

Нищо ново под слънцето. От както има компютри, нещата вървят все в една посока: разработката на софтуер става все по-лесна и по-лесна, разни инструменти автоматизират всичко. Отначало са асемблерните езици; после идват езици от по-високо ниво с компилатори, които превръщат готови конструкции в машинен код. Наслагват се все повече слоеве: RAD инструменти дават възможност за програмиране с все повече цъкане и по-малко писане. „Помагат“ на програмистите да не мислят за компютъра, аз за задачата. Използват се готови библиотеки като MFC, после идват разните виртуални бози като Java и .NET, които отделят разработчиците и от операционната система. Сега можеш да си програмист без да знаеш как е устроен компютъра, да не говорим за процесора.

По-лесно, да, но на каква цена? Всички „готови“ решения, на каквото и да е ниво са от типа „най-малко общо кратно“. Универсални – „one size fits all“. Какво е лошото на този подход? Първо, че много силно спъва развитието. Повечето съвременни програми използват инструкциите на Pentium. Да оптимизираш за новите платформи е трудно, не става с готови инструменти и почти никой не го прави. Освен това обобщените и опростени модели нямат много възможности за интелигентен подход при реализацията. Представете си, че в строителството има няколко градивни блокчета и всичко се прави от тях: стая 2х3 метра с 1 прозорец, стая 4х3 метра с 2 прозореца, баня/тоалетна в син цвят и коридор 2 метра. Използват се 10 вида различни по цвят, но доста подобни като способности подови настилки, които стават и за облицовка на стена – вътрешна и външна. Ако някой иска нещо по-специално трябва сам да си забърка бетон, сам да си пече тухли и т.н. Не че не може, но е трудно. Мисля, че в този случай строителите ще бъдат доста доволни, но не и потребителите…

Ето сега чувам за инструменти, с които си рисуваш концептуален модел. После с малко ръчкане (още не става съвсем автоматично) ти се генерират класовете. Генерират ти се и JABORAC таблиците в БД. И идва един човек, който мисли за БД като нещо различно от JABORAC и предлага някакво разместване, което може и да подобри скалируемостта. И получава отговор „Това Java-та не го може“. Защото промяната не влиза в калъпа. Калъпа е универсален, ток работи върху UNIX и Windows CE. Работи върху Oracle и върху Access. Калъпа не допуска оптимизации – неее, той се чупи от такива неща.

Трябва да сложа някаква поука на края. Какво ли да кажа? Нека се заглеждаме на по-ниско ниво. Нека не бъдем прости юзъри. До преди 2-3 години процесорите си удвояваха честотата според закона на Мур (който, всъщност, говори за транзисторите, не за тактовата честота). После достигнаха една физическа граница и сега се развиват в други посоки – по-трудни, но все пак ефективни. Не знам кога методите за разработка ще достигнат своята граница, но тогава напред ще продължат само тези, които имат опит в оптимизацията, а не само в опростяването.

П.С. Същото се случва и със софтуера. Всичко става с цъкане, операционни системи се инсталират с няколко натискания на „next“ (или дори „продължи“), после върху тях се изсипва софтуер направо „с лопатата“. И после се чудим защо домашните ни компютри са 1000 пъти по-мощни от университетския компютъър в Бъркли от 70-те години, и пак се влачат

 Posted by at 15:42

Sorry, the comment form is closed at this time.