Pytania otagowane jako language-design

Pytania dotyczące projektowania i struktury języków programowania.

2
Dlaczego operatory bitowe mają niższy priorytet niż porównania?
Czy ktoś mógłby wyjaśnić uzasadnienie, dlaczego w wielu najpopularniejszych językach (patrz uwaga poniżej) operatory porównania (==,! =, <,>, <=,> =) Mają wyższy priorytet niż operatory bitowe (&, |, ^ , ~)? Nie sądzę, że kiedykolwiek spotkałem się z zastosowaniem, w którym ten priorytet byłby naturalny. Zawsze są takie rzeczy jak: …

6
Dlaczego C # został stworzony przy użyciu słów kluczowych „new” i „virtual + override” w przeciwieństwie do Java?
W Javie nie istnieją virtual, new, overridekluczowe dla określenia metody. Tak więc działanie metody jest łatwe do zrozumienia. Ponieważ jeśli DerivedClass rozszerza BaseClass i ma metodę o tej samej nazwie i tej samej sygnaturze BaseClass, wówczas nadpisanie nastąpi w czasie polimorfizmu w czasie wykonywania (pod warunkiem, że metoda nie jest …

9
Dlaczego języki nie uwzględniają implikacji jako operatora logicznego?
To może być dziwne pytanie, ale dlaczego w wielu językach (Java, C, C ++, Python Haskell - jako operator logiczny nie ma to żadnego znaczenia)? Uważam, że logiczna implikacja jest znacznie łatwiejsza do napisania (szczególnie w asercjach lub wyrażeniach podobnych do asercji), a następnie negacja za pomocą lub: encrypt(buf, key, …


2
Dlaczego „void” nie jest dozwolone jako typ ogólny w C #
Jakie były decyzje projektowe, które przemawiały za tym, że voidnie można ich zbudować i że nie można ich uznać za rodzaj ogólny? W końcu jest to po prostu specjalny pusty structi uniknąłby całkowitej PITA posiadania odrębnych Funci Actiondelegatów. (C ++ pozwala na jawne voidzwroty i pozwala voidjako parametr szablonu)

3
Co to jest system typów?
tło Projektuję język jako projekt poboczny. Mam do tego działający asembler, analizator statyczny i maszynę wirtualną. Ponieważ mogę już skompilować i uruchomić nietrywialne programy z wykorzystaniem infrastruktury, którą zbudowałem, pomyślałem o wygłoszeniu prezentacji na moim uniwersytecie. Podczas mojej rozmowy wspomniałem, że maszyna wirtualna zapewnia system typów, zapytano: „Do czego służy …

5
Dlaczego wszystkie funkcje <algorytmu> zajmują tylko zakresy, a nie kontenery?
Istnieje wiele przydatnych funkcji &lt;algorithm&gt;, ale wszystkie działają na „sekwencjach” - parach iteratorów. Na przykład, jeśli mam kontener i lubię na nim biegać std::accumulate, muszę napisać: std::vector&lt;int&gt; myContainer = ...; int sum = std::accumulate(myContainer.begin(), myContainer.end(), 0); Gdy wszystko, co zamierzam zrobić, to: int sum = std::accumulate(myContainer, 0); Co jest w …

4
Dlaczego iteratory w Pythonie zgłaszają wyjątek?
Oto składnia iteratorów w Javie (nieco podobna składnia w C #): Iterator it = sequence.iterator(); while (it.hasNext()) { System.out.println(it.next()); } Co ma sens. Oto równoważna składnia w Pythonie: it = iter(sequence) while True: try: value = it.next() except StopIteration: break print(value) Myślałem, że wyjątki powinny być stosowane tylko w wyjątkowych …

8
Po co projektować nowoczesny język bez mechanizmu obsługi wyjątków?
Wiele współczesnych języków zapewnia bogate funkcje obsługi wyjątków , ale język programowania Swift firmy Apple nie zapewnia mechanizmu obsługi wyjątków . Pogrążony w wyjątkach, tak jak ja, mam problem z otuleniem się, co to znaczy. Swift ma asercje i oczywiście zwraca wartości; ale mam problem z wyobrażeniem sobie, w jaki …

13
Dlaczego operator przypisania przypisuje do lewej strony?
Niedawno zacząłem uczyć znajomego programowania (używamy Pythona), a kiedy zaczęliśmy omawiać tworzenie zmiennych i operatora przypisania, zapytała, dlaczego wartość po prawej stronie jest przypisana do nazwy po lewej stronie, a nie odwrotnie . Nie myślałem o tym zbyt wiele, ponieważ wydawało mi się to naturalne, ale powiedziała, że ​​od lewej …

5
Dlaczego wciąż zmieniane są stare języki programowania?
To pytanie nie brzmi: „Dlaczego ludzie nadal używają starych języków programowania?” Rozumiem to całkiem dobrze. W rzeczywistości dwa języki programowania, które znam najlepiej, to C i Scheme, z których oba pochodzą z lat 70. Ostatnio czytałem o zmianach w C99 i C11 w porównaniu do C89 (która nadal wydaje się …

4
Dlaczego struktury i klasy są osobnymi pojęciami w języku C #?
Podczas programowania w języku C # natknąłem się na dziwną decyzję dotyczącą projektu języka, której po prostu nie rozumiem. Zatem C # (i CLR) ma dwa zagregowane typy danych: struct(typ wartości, przechowywane na stosie, bez dziedziczenia) i class(typ referencyjny, przechowywane na stercie, ma dziedziczenie). Ta konfiguracja na początku brzmi nieźle, …



22
Czy białe znaki w identyfikatorach były kiedykolwiek idiomatyczne? [Zamknięte]
Styl C # sugeruje użycie CamelCase w identyfikatorach do rozgraniczenia słów. Tradycja Lisp sugeruje użycie zamiast-myślników. Czy kiedykolwiek istniał język programowania, w którym używanie spacji w identyfikatorach było nie tylko dozwolone, ale często używany idiom przy stosowaniu identyfikatorów wielosłówowych? Możliwe jest posiadanie identyfikatorów ze spacjami w niektórych implementacjach schematu , …

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.