Pytanie o to, czy C # lub Java wyprzedzają drugie, jest przedmiotem debaty, ale zamiast skupiać się na cechach językowych jednego lub drugiego, wolałbym skupić się na tym, co wiąże się z ewolucją języka. Jest jeden fakt, który nie wydaje mi się, aby ktokolwiek mógł się kłócić: Java jest starsza niż C #.
Problemy ze zmianą sposobu działania języka:
- Jeśli złamiesz kompatybilność wsteczną, wkurzysz wielu programistów
- Jeśli wkurzysz programistów, przejdą na inny język, który lepiej ich wspiera. Dlatego nie ma powodu, aby kontynuować pracę z językiem.
- Java podjęła już pewne decyzje projektowe z naciskiem na wprowadzenie języka na rynek. Nadzieją było wrócić i wypełnić niektóre puste pola. Te decyzje wciąż nękają język, ponieważ opiekunowie nie chcą naruszać pierwszego punktu.
- Java płonęła wiele nowych terytoriów i raz na zawsze udowodniła, że język zbierający śmieci można traktować poważnie - i osiąga wystarczające wyniki dla większości ludzi.
- C # przyszedł później i nauczył się wielu lekcji, na które natknął się Java - więc byli w stanie uniknąć niektórych technicznych ograniczeń, które Java ma z powodu punktu 3.
- Nowe funkcje językowe muszą rozsądnie rozwiązać prawdziwy problem. Nie każda funkcja językowa ma sens w kontekście języka, do którego próbujesz ją dodać. Dlatego pomimo podobieństw Java i C # nadal będą różnymi językami.
Czy C # ma więcej funkcji językowych niż Java? Chyba tak. Czy są przydatne? Chyba tak. Czy to oznacza, że C # jest lepszy lub bardziej dojrzały niż Java? Z czym się nie zgadzam. Są różne, jasne i proste. Java nigdy nie będzie miała wszystkich funkcji języka C #, ponieważ C # nigdy nie będzie mieć wszystkich funkcji języka Java.
Jedna z funkcji Java, możliwość napisania programu w systemie Windows i wdrożenia go w systemach Unix lub Mac, nigdy nie nastąpi bezpośrednio dzięki wsparciu Microsoft. Dlaczego pytasz? Nie dlatego, że Microsoft jest zły (czy to prawda, czy nie, nie obchodzi mnie to). Dzieje się tak dlatego, że nauczyli się lekcji, której Sun nigdy nie zrobił: pisanie raz uruchomione w dowolnym miejscu utowarowuje systemy operacyjne i sprzęt. Jeśli zależy Ci na zarabianiu na sprzedaży twojego systemu operacyjnego, nie chcesz, aby wymiana była wciąż łatwa i nadal działała aplikacja. Jeśli to zrobisz, nie możesz zarobić na systemie operacyjnym, ponieważ zawsze są tańsze opcje.