Patrząc na stronę Julii , możesz zobaczyć testy porównawcze kilku języków w kilku algorytmach (czasy pokazane poniżej). W jaki sposób język z kompilatorem napisanym pierwotnie w C może przewyższyć kod C? Rysunek: czasy testu porównawczego w stosunku do C (im mniejsze, tym lepsza wydajność C = 1,0).
Zauważyłem, że niektóre aplikacje lub algorytmy zbudowane na języku programowania, na przykład C ++ / Rust, działają szybciej lub szybciej niż te zbudowane na powiedzmy Java / Node.js, działające na tym samym komputerze. Mam kilka pytań na ten temat: Dlaczego to się dzieje? Co rządzi „prędkością” języka programowania? Czy ma …
Pytanie: „Niektóre właściwości języka programowania mogą wymagać, aby jedynym sposobem na napisanie w nim kodu jest interpretacja. Innymi słowy, kompilacja do natywnego kodu maszynowego tradycyjnego procesora nie jest możliwa. Jakie są te właściwości?” Kompilatory: zasady i praktyka Parag H. Dave i Himanshu B. Dave (2 maja 2012) Książka nie daje …
Zastanawiam się, czy można zbudować kompilatory dla dynamicznych języków, takich jak Ruby, aby mieć podobną i porównywalną wydajność do C / C ++? Z tego, co rozumiem na temat kompilatorów, weźmy na przykład Ruby, kompilowanie kodu Ruby nigdy nie będzie wydajne, ponieważ sposób, w jaki Ruby obsługuje odbicie, funkcje takie …
W językach takich jak C programista powinien wstawiać połączenia za darmo. Dlaczego kompilator nie robi tego automatycznie? Ludzie robią to w rozsądnym czasie (ignorując błędy), więc nie jest to niemożliwe. EDYCJA: Dla przyszłego odniesienia, oto kolejna dyskusja, która ma ciekawy przykład.
Interesuje mnie złożoność czasowa kompilatora. Oczywiście jest to bardzo skomplikowane pytanie, ponieważ istnieje wiele kompilatorów, opcji kompilatora i zmiennych do rozważenia. W szczególności interesuję się LLVM, ale interesują mnie wszelkie przemyślenia i miejsca rozpoczęcia badań. Całkiem google wydaje się niewiele rozjaśniać. Domyślam się, że istnieją pewne kroki optymalizacji, które są …
Załóżmy, że program został napisany w dwóch różnych językach, niech to będą język X i język Y, jeśli ich kompilatory generują ten sam kod bajtowy, dlaczego powinienem używać języka X zamiast języka Y? Co określa, że jeden język jest szybszy od drugiego? Pytam o to, ponieważ często zdarza się, że …
Planuję uczyć kurs zimowy na różną liczbę tematów, z których jednym będą kompilatory. Teraz natknąłem się na ten problem, myśląc o zadaniach do wykonania przez cały kwartał, ale to mnie zaskoczyło, więc mogę go użyć jako przykładu. public class DeadCode { public static void main(String[] args) { return; System.out.println("This line …
Rozumiem, że jeśli istnieją 2 lub więcej drzew lewej lub prawej pochodnej, gramatyka jest niejednoznaczna, ale nie jestem w stanie zrozumieć, dlaczego jest tak źle, że wszyscy chcą się go pozbyć.
Mam następujący cytat z kursu mojego kompilatora (w kontekście kolorowania grafów): Ponieważ jest wolny, kolorowanie wykresów jest zwykle stosowane w kompilatorach wsadowych, podczas gdy skanowanie liniowe jest zwykle stosowane w kompilatorach JIT. Nie mogłem znaleźć jasnej definicji online. Co sprawia, że kompilator jest kompilatorem wsadowym?
Wikipedia, jak również inne źródła, które znalazłem, wskazują voidtyp C jako typ jednostki, a nie typ pusty. Uważam to za mylące, ponieważ wydaje mi się, że voidlepiej pasuje do definicji typu pustego / dolnego. voidO ile wiem, nie zamieszkują żadnych wartości . Funkcja z typem zwracanym void określa, że funkcja …
Czy istnieją programy, które potrafią „tłumaczyć” kod źródłowy między dowolnymi dwoma językami (zakładając, że tłumacz ma dostęp do wymaganych bibliotek)? Jeśli tak, to w jaki sposób działają (zastosowane techniki, wymagana wiedza itp.)? Jak można by je wykonalnie skonstruować? Jeśli nie są, jakie są ograniczenia uniemożliwiające ich rozwój? Czy jest to …
Wiele komplikuje się w kompilatorach JIT dla języków takich jak Java, Ruby i Python. Czym różnią się kompilatory JIT od kompilatorów C / C ++ i dlaczego kompilatory napisane dla Java, Ruby lub Python nazywane są kompilatorami JIT, podczas gdy kompilatory C / C ++ to tylko kompilatory?
W książce Andrew W. Appela, Modern Compiler Implementation in ML , mówi w rozdziale 17, że teoria obliczalności pokazuje, że zawsze będzie możliwe wynalezienie nowych transformacji optymalizacyjnych i udowadnia, że w pełni optymalizujący kompilator rozwiąże problem zatrzymania: Program Q, który nie wytwarza mocy wyjściowej i nigdy nie zatrzymuje się, można …
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.