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: …
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 …
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, …
Dlaczego w prawie wszystkich współczesnych językach programowania (Go, Rust, Kotlin, Swift, Scala, Nim, a nawet ostatnia wersja Python) typy zawsze pojawiają się po nazwie zmiennej w deklaracji zmiennej, a nie wcześniej? Dlaczego x: int = 42nie int x = 42? Czy ten drugi nie jest bardziej czytelny niż ten pierwszy? …
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)
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 …
Istnieje wiele przydatnych funkcji <algorithm>, 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<int> 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 …
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 …
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 …
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 …
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ę …
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, …
Zgodnie z tym postem nigdy nie powinniśmy polegać na nazwie metody finalizacji. Dlaczego więc Java w ogóle umieściła go w języku programowania? Wydaje się, że włączenie jakiejkolwiek funkcji, która może zostać wywołana, jest straszną decyzją .
Jesteśmy często mówią , że sprzęt nie obchodzi, co język program jest napisany w jak to widzi tylko skompilowany kod binarny, jednak nie jest to cała prawda. Weźmy na przykład pokornego Z80; jego rozszerzenia do zestawu instrukcji 8080 obejmują instrukcje takie jak CPIR, które są przydatne do skanowania ciągów typu …
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 , …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.