avva: (Default)
[personal profile] avva
Еще Бисмарк заметил, что стандартные библиотеки - как сосиски: приятнее использовать по назначению, не зная в подробностях, как их делают.

В исходниках java.util.Arrays, когда после множества фасадных методов сортировки с разными опущенными аргументами дело доходит до "мяса", до настоящего кода сортировки, его предваряет следующий комментарий:

    /*
     * The code for each of the seven primitive types is largely identical.
     * C'est la vie.
     */

А дальше идет семь совершенно одинаковых копий одного и того же кода квиксорта, отличающихся только типами аргументов и локальных переменных. По две страницы кода на каждую копию. Например, основной метод начинается так (к нему еще есть три вспомогательных, тоже в семи копиях каждый).

    private static void sort1(long x[], int off, int len) { ...
    private static void sort1(int x[], int off, int len) { ...
    private static void sort1(short x[], int off, int len) { ...
    private static void sort1(char x[], int off, int len) { ...
    private static void sort1(byte x[], int off, int len) { ...
    private static void sort1(double x[], int off, int len) { ... 
    private static void sort1(float x[], int off, int len) { ...

C'est la vie.

Date: 2009-10-09 05:15 pm (UTC)
nine_k: A stream of colors expanding from brain (Default)
From: [personal profile] nine_k
Ну возьмём C++ с его образцовыми templates.
И что, при подстановки 7 разных типов он не сгенерирует 7 реализаций, отличающихся только типом?

Date: 2009-10-09 08:15 pm (UTC)
From: (Anonymous)
так это же ее, машины, работа. генерировать 7 реализаций, отличающихся только типом. а программист не должен этим заниматься, у него другие задачи, в идеале если.

Date: 2009-10-09 08:36 pm (UTC)
From: [identity profile] municationtube.livejournal.com
А разве 7 оптимизированных для каждого типа реализаций — это не то, что мы хотим получить?

Date: 2009-10-09 09:52 pm (UTC)
From: [identity profile] caseq.livejournal.com
Сгенерирует. Ровно это в данном случае и требуется. Ровно это вообще и происходит в STL в аналогичных случаях, и именно этим она и замечательна. Оптимизация и все такое. Кстати, в С# дженерики тоже инстанциируются под конкретный тип, правда в run time.

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 29th, 2025 06:47 pm
Powered by Dreamwidth Studios