Wpis z mikrobloga

@Legol: @michalfranc: @wytrzzeszcz: @Sudokuu: Generalnie denerwuje mnie strasznie to bezpieczeństwo pamięci i udogodnienia które ma Java - wolę C++ przez to że daje swobodę w zarządzaniu pamięcią i dostępem do danych i moim zdaniem argument że dzięki temu Java jest bezpieczniejsza pod względem wycieków pamięci jest z dupy bo w nowych wersjach C++ są mechanizmy które sprawiają że nie trzeba się w ogóle martwić takimi rzeczami a wciąż
@zimny_stolec:
Java jest jezykiem ktory jest bardziej stabilny w rekach mniej doswiadczonych devow, dlatego stala sie popularna. Doswiadczonych devow jest malo a softu do napisania sporo ...

Pytanie po co ci swoboda w zarzadzaniu pamiecia ? Rozumiem ze robisz cos co wymaga tego ?

Moze byc tak ze twoje podejscie do programowania wymaga recznego zarzadzania, wtedy warto sie zastanowic czy jest to dobre podejscie.
@michalfranc: Prosty przykład który spowodował mój zbóldupiony post: chcę zmodyfikować tablicę intów o rozmiarze over milion. Jasna rzecz że nie chcę jej kopiować i zwracać. W C++ krótka piłka - przekazanie przez referencję, w Javie trzeba jakoś to obchodzić - typ tablicy intów jest narzucony przez wbudowaną w Javę klasę. Muszę przekazać cały obiekt który trzyma tą tablicę (wtedy kod traci na czytelności bo klasa która ma być odpowiedzialna za zmodyfikowanie
@zimny_stolec: ojjjj, zdecydowanie nie jest tak różowo jak mówisz. Pełna kontrola jest fajna, daje dużo możliwości, a na pewno jak ktoś się zna to zrobi szybszą aplikację, ale programista musi być koniecznie bardziej doświadczony i spędzi nad kodem trochę więcej czasu, a tym samym takiej osobie trzeba więcej zapłacić.

Idąc tym tokiem myślenia C++ ssie w porównaniu do aseblera, bo tam można mieć pełną kontrolę nie tylko nad pamięcią, ale też
@zimny_stolec: Jest to mocno mylące. Generalnie w javie wszystko jest przekazywane by-value. Ale przez by-value mamy na myśli adres w pamięci, a więc to ci napisał @vytah jest poprawne.

Jedyny problem z takim przekazywaniem jest taki, że zainicjowanie zmiennej nowym obiektem w ramach tej funkcji nie zmieni obiektu pod tym adresem a utworzy nowy w innym obszarze pamięci przez co po wyjściu z funkcji stara referencja będzie wskazywać na niezmieniony obiekt.
@wytrzzeszcz: jako, że zaplusowałem to odpowiem: java nie ma RAII (więc jak żyć, pytam ?) i konstruktory wołają się w odwrotnej (niewłaściwej) kolejności :))
Z drugiej strony c++ ciągle czeka na compile time class introspection, a java od początku ma pełne reflection.
@zimny_stolec: Jakiego typu to jest modyfikacja? Bo może wystarczy jakaś klasa, której atrybutem jest ta tablica i sobie będzie na niej wykonywał operacje sam obiekt? Poza tym tablica "over milion" to nie jest rzecz, z którą się jakoś szczególnie często do tej pory spotykałem poza zadankami z OIa czy innych Potyczek Algorytmicznych.