Яка різниця між C # та Java? Чому C # не використовується для машинного програмування?


Відповідь 1:

Різниця між Java та C # - це Каламансі / Каламодин та апельсин. Гаразд, це дивовижно, так що це означає насправді?

Це означає, що обидві мови належать до однієї сім'ї, тобто обидві є об'єктно-орієнтованими та нечистими функціональними мовами, але між ними все ще є достатньо відмінностей, які розрізняють їх.

Тож давайте почнемо з початку:

  1. C # виникла з думкою про те, щоб розвиватися на вже приголомшливому C ++ для Microsoft. У той час як Java була створена з ідеєю охопити всі види пристроїв, тобто портативність. C # є більш складною мовою, ніж Java. Модифіковані та нові концепції присутні в C # порівняно з Java. Деякі приклади - делегати, перевантаження операторів та властивості (getters & сетери).

Тож навіть після стільки, чому C # не використовується в машинному навчанні. По-перше, він набагато більш специфічний для платформ Microsoft, інший має мало алгоритмів / бібліотек машинного навчання. Але справа в тому, що він використовується не в основному, тому що для початківців це теж важко використовувати.

Чому MATLAB, Python та R використовуються більше?

MATLAB відмінно підходить для представлення та роботи з матрицями. Тому я вважаю, що це чудова мова або платформа, яку слід використовувати при поглинанні в лінійну алгебру даного методу. Я думаю, що підходить вивчати алгоритми як поверхово, так і вперше, коли ви намагаєтесь щось зрозуміти або заглибитись у метод. Наприклад, він популярний на університетських курсах для початківців.

R - робоча конячка для статистичного аналізу та за допомогою машинного навчання. Багато розмов приділяється криві навчання, я не дуже бачив проблеми. Це платформа, яка використовується для розуміння та дослідження ваших даних за допомогою статистичних методів та графіків. Він має величезну кількість алгоритмів машинного навчання, а також розширені реалізації теж написані розробниками алгоритму.

Незважаючи на те, що Python є більш загальною мовою програмування та написання сценаріїв, він набирає популярності серед науковців даних та інженерів машинного навчання. На відміну від R або MATLAB, обробка даних та ідіоми обчислювальної техніки не вбудовані в саму мову, але такі бібліотеки, як NumPy, SciPy та Pandas пропонують еквівалентну функціональність у, можливо, більш доступному синтаксисі. Спеціалізовані бібліотеки машинного навчання, такі як scikit-learn, Theano та TensorFlow, дають вам можливість тренувати різні моделі машинного навчання, потенційно використовуючи розподілену обчислювальну інфраструктуру. Більшість критично важливих для цих кодів кодів все ще пишеться на C / C ++ або навіть Fortran, при цьому пакети Python служать обгортками або API (те саме стосується багатьох пакетів R). Але найбільша перевага полягає в тому, що екосистема Python дозволяє дуже легко скласти складний продукт або послугу, наприклад, веб-додаток за допомогою Django або Flask, або настільний додаток з використанням PyQt, або навіть автономний робототехнічний агент за допомогою ROS.

B ... B ... Але чи використовуються сім'ї Java та C в таких речах?

Java є мовою вибору інженера-програмного забезпечення через його чітку та послідовну реалізацію об'єктно-орієнтованого програмування та незалежність платформи за допомогою JVM. Він жертвує стислістю та гнучкістю для ясності та надійності, що робить його популярним для впровадження критичних програмних систем для підприємств. Щоб підтримувати той самий рівень надійності та уникати написання брудних інтерфейсів, компанії, які використовують Java, можуть віддати перевагу дотримуватися її потреб у машинному навчанні. Окрім бібліотек та інструментів, які корисні для аналізу та складання прототипів (наприклад, Weka), є кілька чудових варіантів побудови широкомасштабних розподілених навчальних систем на Java, такі як Spark + MLlib, Mahout, H2O та Deeplearning4j. Ці бібліотеки / рамки добре грають із стандартними системами обробки та зберігання даних, такими як Hadoop / HDFS, що полегшує їх інтеграцію.

C / C ++ ідеально підходить для програм низького рівня, таких як компоненти операційної системи та мережеві протоколи, де обчислювальна швидкість та ефективність пам'яті вкрай важливі. З цих же причин це також популярний вибір для впровадження процедур машинного навчання. Однак його відсутність ідіоматичних абстракцій для обробки даних та додаткових накладних витрат для управління пам’яттю може зробити її непридатною для початківців та обтяжливою для розробки повноцінних систем «до кінця».


Відповідь 2:

Всі ядра ML живляться за допомогою матричної алгебри, і вони реалізовані в бібліотеках BLAS в C і збірці. Ці кодекси виглядають некрасиво і хакі, і ніхто не турбує, якщо вони дають пікові показники.

Для людей, які займаються машинним навчанням, на більш високому рівні вони мають алгоритми, доступні також як пакети R або пакунки python Sci Kit ...

Отже, природно люди будують на тому, що є в наявності, широко використовується. Це воно. Ми не пишемо прикладних програм, малюємо віджети і переживаємо за смуги прокрутки. Також люди не використовують Java ... в основному ми використовуємо R, python.

C # - це версія мікрософт Java. MS знає, як важливо мати розробників на своїй стороні.