Питання про те, чи випереджає C # або Java перед іншим, для обговорення, але замість того, щоб зосередитись на мовних особливостях тієї чи іншої, я б скоріше зосередився на тому, що пов'язане з розвитком мови. Один факт, з яким я не думаю, що ніхто буде сперечатися: Java старша за C #.
Проблеми із зміною способу роботи мови:
- Якщо ви порушите зворотну сумісність, ви змусите багатьох розробників
- Якщо ви змусите своїх розробників, вони переходять на іншу мову, яка їх краще підтримує. Отже, немає причин продовжувати працювати з мовою.
- Java прийняла деякі дизайнерські рішення на початку тиску, щоб домогтися виходу мови на ринок. Надія полягала в тому, щоб повернутися і заповнити деякі заготовки. Ці рішення все ще набридають мовою, оскільки керівники не хочуть порушувати перший пункт.
- Java засмітила багато нової території, і доводила раз і назавжди, що до мови, що збирається зі сміттям, можна сприймати серйозно - і працювати досить добре для більшості людей.
- Пізніше C # завітав і засвоїв багато уроків, на які Java натрапила - тому вони змогли уникнути деяких технічних обмежень, які має Java через пункт 3.
- Нові мовні функції повинні вирішити справжню проблему розумним чином. Не кожна мовна функція має сенс у контексті мови, до якої ви намагаєтесь додати її. Ось чому, незважаючи на їх подібність, Java та C # продовжуватимуть бути різними мовами.
Отже, чи має C # більше мовних особливостей, ніж Java? Я думаю так. Чи корисні вони? Я думаю так. Чи означає це, що C # кращий або зріліший за Java? З цим я не згоден. Вони бувають різні, прості та прості. Java ніколи не матиме всіх функцій C #, оскільки C # ніколи не матиме всіх можливостей Java.
Одна з особливостей Java, можливість писати програму в Windows і розгортати її на Unix або Mac, ніколи не станеться безпосередньо підтримкою Microsoft. Чому ти питаєш? Це не тому, що Microsoft злий (чи правда це чи ні, мені це зовсім не байдуже). Це тому, що вони засвоїли урок, який Sun ніколи не робив: пишіть один раз запускати будь-де кодируючи операційні системи та обладнання. Якщо ви дбаєте про те, щоб заробляти гроші на продажах операційної системи, ви не хочете, щоб це було банально обмінятись і все-таки працювати над додатком. Якщо ви зробили це, ви не зможете отримати прибуток від операційної системи, оскільки завжди є дешевші варіанти.