Pytania otagowane jako language-design

Znacznik dla pytań związanych z projektowaniem dowolnego aspektu języków programowania.

30
„Najmniejsze zdziwienie” i zmienny argument domyślny
Każdy, kto majstruje przy Pythonie wystarczająco długo, został ugryziony (lub rozdarty na kawałki) przez następujący problem: def foo(a=[]): a.append(5) return a Nowicjusze Python oczekiwałby to funkcja zawsze zwraca listę z tylko jednego elementu: [5]. Rezultat jest natomiast zupełnie inny i bardzo zadziwiający (dla nowicjusza): >>> foo() [5] >>> foo() [5, …

16
Dlaczego Java nie obsługuje podpisów int?
Dlaczego Java nie obsługuje obsługi liczb całkowitych bez znaku? Wydaje mi się, że jest to dziwne pominięcie, biorąc pod uwagę, że pozwalają one na napisanie kodu, który rzadziej powoduje przepełnienie na nieoczekiwanie dużych danych wejściowych. Co więcej, używanie liczb całkowitych bez znaku może być formą samokontroli, ponieważ wskazują one, że …

13
Dlaczego musimy zdefiniować zarówno == i! = W języku C #?
Kompilator C # wymaga, aby ilekroć typ niestandardowy definiował operatora ==, musi on także definiować !=(patrz tutaj ). Dlaczego? Jestem ciekawy, dlaczego projektanci uznali to za konieczne i dlaczego kompilator nie może ustawić domyślnej rozsądnej implementacji dla jednego z operatorów, gdy obecny jest tylko drugi. Na przykład Lua pozwala zdefiniować …

5
Dlaczego „końcowe” jest niedozwolone w metodach interfejsu Java 8?
Jedną z najbardziej przydatnych funkcji Java 8 są nowe defaultmetody interfejsów. Istnieją zasadniczo dwa powody (mogą być inne), dlaczego zostały wprowadzone: Zapewnienie rzeczywistych domyślnych implementacji. Przykład:Iterator.remove() Zezwolenie na ewolucję API JDK. Przykład:Iterable.forEach() Z punktu widzenia projektanta API chciałbym móc korzystać z innych modyfikatorów metod interfejsu, np final. Przydałoby się to …


5
Zalety dziedziczenia prototypowego w porównaniu z klasycznym?
W końcu przestałem ciągnąć stopy przez te wszystkie lata i postanowiłem nauczyć się JavaScript „poprawnie”. Jednym z najbardziej porywających elementów projektowania języków jest implementacja dziedziczenia. Mając doświadczenie w Ruby, bardzo cieszyłem się z zamykania i dynamicznego pisania; ale przez całe życie nie mogę zrozumieć, jakie korzyści można uzyskać z instancji …



5
Jak działa „to” słowo kluczowe w funkcji?
Właśnie spotkałem ciekawą sytuację w JavaScript. Mam klasę z metodą, która definiuje kilka obiektów za pomocą notacji literałowej. Wewnątrz tych obiektów thisużywany jest wskaźnik. Na podstawie zachowania programu wydedukowałem, że thiswskaźnik odnosi się do klasy, na której wywołano metodę, a nie do obiektu tworzonego przez literał. Wydaje się to arbitralne, …

12
Dlaczego Python nie ma funkcji znaku?
Nie rozumiem, dlaczego Python nie ma signfunkcji. Ma abswbudowaną (którą uważam za signsiostrę), ale niesign . W Pythonie 2.6 jest nawet copysignfunkcja (w matematyce ), ale nie ma znaku. Po co męczyć się, aby napisać, copysign(x,y)kiedy możesz po prostu napisać a, signa następnie uzyskać copysignbezpośrednio odabs(x) * sign(y) ? To …

5
Dlaczego tablicy nie można przypisać do Iterable?
z Java5 możemy napisać: Foo[] foos = ... for (Foo foo : foos) lub po prostu używając Iterable w pętli for. To jest bardzo przydatne. Nie można jednak napisać ogólnej metody iterowalnej: public void bar(Iterable<Foo> foos) { .. } i wywoływanie go tablicą, ponieważ nie jest to Iterable: Foo[] foos …




13
Kiedy ktoś pisze nowy język programowania, co pisze w nim?
Proszę wybaczyć moją ignorancję. Bawię się PHP i zmoczę nogi podczas przeglądania, i czuję się zmuszony zadać pytanie, nad którym zastanawiałem się od lat: Kiedy piszesz zupełnie nowy język programowania, w jakim go piszesz ? Prawdopodobnie brzmi to naprawdę głupio dla wszystkich programistów, do których mam ogromny szacunek, ale dla …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.