Но да прескочим обидите (не ти правят чест) и странните съждения от сорта на "ако пише на Java, значи не се замисля за ресурсите". Това е точно толкова нелепо, колкото да кажеш "абе този пише на C, т.е. макроасемблер, значи не се замисля за платформено независима архитектура".
Java е инструмент и като такъв има свои особености, с които да се съобразиш, както и несъмнени недостатъци.
Абсолютно съгласен съм, че не е добре програмистът изобщо да не контролира управлението на паметта. Просто защото е страшно трудно да се напише код, който да знае как най-добре да я управлява. Значи, трябва да има начин да се дават съвети на управителя на паметта, в допълнение на наистина удобната възможност когато не ти трябва, да не мислиш за управлението й.
Не си разбрал нещо ключово в постинга ми, струва ми се. Управлението на програмата е нещо далеч по-голямо и по-важно от преносимостта. Същественото е, че програмата не може да прави каквото си иска, което позволява да отрежеш цели клонове грешки (които всички ние, с изключение може би на теб, допускаме) и потенциални пробиви в сигурността. Помага страшно много и при дебъгването - вместо да се намаже нещо някъде, просто ще те ударят през пръстите. А намазване се случва в много ситуации, които не са свързани директно с програмистка грешка от сорта на излизане от рамките на масив. Става и при неправилен cast, при използване на стара версия на интерфейс и какво ли още не ...
Ако се разгледа развитието на C++ в последните години, в очи се набива нека да не е точно подражание на Java, но при всички случаи взаимстване на технологии от нея, примерно защитени индексирания. Разликата е, че просто няма как да принудиш програмиста да ги използва.
Да го кажем така: полза от управлението на програмата има. Java е първият сериозен опит в тази насока, с много недостатъци и несомислици. .Net е вторият сериозен опит. В идеята има много хляб, просто защото е по-важно да се пише стабилен, отколкото бърз код и то да се пише бързо. Разбира се, не бива да се изпада в крайности, но като цяло, в доста случаи по-важно е да работи, на цената на примерно 30% забавяне, отколкото да се чупи или да отнема с месеци повече за разработка.
И C++ просто не е инструмент за писане на управляем код. C++ е инструмент за писане на критични приложения, в които скоростта е от първостепенно значение, както и вероятно малкото използвана памет. Поради важността на кода можем да си позволим по-бавна разработка и купища време за debug. Но за едно бизнес-приложение, усилието да се пише на C++, а не на управляема платформа (нека не е Java, нека е C#) е неоправдано.
Понякога седя и си мисля, а понякога само си седя ...
|