Inżynieria oprogramowania

Pytania i odpowiedzi dla profesjonalistów, nauczycieli akademickich i studentów pracujących w cyklu życia systemów


1
Zrozumienie różnic: tradycyjny interpreter, kompilator JIT, interpreter JIT i kompilator AOT
Próbuję zrozumieć różnice między tradycyjnym tłumaczem, kompilatorem JIT, interpreterem JIT i kompilatorem AOT. Tłumacz to po prostu maszyna (wirtualna lub fizyczna), która wykonuje instrukcje w pewnym języku komputerowym. W tym sensie JVM jest tłumaczem, a fizyczne procesory to tłumacze. Kompilacja z wyprzedzeniem oznacza po prostu skompilowanie kodu do jakiegoś języka …

6
Dlaczego Java 8 nie zawiera niezmiennych kolekcji?
Zespół Java wykonał mnóstwo świetnej pracy, usuwając bariery w programowaniu funkcjonalnym w Javie 8. W szczególności zmiany w kolekcjach java.util wykonują świetną robotę, łącząc przekształcenia w bardzo szybko przesyłane strumieniowo operacje. Biorąc pod uwagę, jak dobrą robotę wykonali, dodając pierwszorzędne funkcje i metody funkcjonalne do kolekcji, dlaczego całkowicie nie udało …



30
Czy danie programistom wolniejszej maszyny programistycznej powoduje szybszy / bardziej wydajny kod? [Zamknięte]
Załóżmy, że daję moim programistom krzyczącą szybką maszynę. VS2010 oparty na WPF ładuje się bardzo szybko. Następnie programista tworzy aplikację WPF lub WPF / e, która działa dobrze na jego urządzeniu, ale w rzeczywistości jest znacznie wolniejsza. To pytanie składa się z dwóch części ... 1) Jeśli dam programistom wolniejszą …
130 ide  testing  performance 

9
Czy wyjątki jako kontrola są uważane za poważny antypattern? Jeśli tak, dlaczego?
W późnych latach 90-tych całkiem sporo pracowałem z bazą kodu, która używała wyjątków jako kontroli przepływu. Zaimplementowano maszynę skończoną do sterowania aplikacjami telefonii. Ostatnio przypominają mi się te dni, ponieważ tworzyłem aplikacje internetowe MVC. Oba mają Controllerdecydujące miejsce, w którym należy iść dalej, i dostarczają dane do logiki docelowej. Działania …

16
Czy jest jakiś sposób na szybsze rozwiązywanie problemów? Właśnie otrzymałem ostrzeżenie od mojego szefa [zamknięte]
Właśnie powiedział mi mój szef, że w poniedziałek otrzymam negatywną ocenę wydajności. Chce ze mną porozmawiać o tym, dlaczego jestem taki wolny i dlaczego mój wskaźnik naprawiania błędów jest tak niski. Uwielbiam programować i rozwiązywać problemy, ale moja praca jest naprawdę bardzo trudna. Jestem programistą przez około 10 lat. Ale …

14
Zademonstrować zły kod klientowi?
Klient poprosił mnie o przeprojektowanie swojej witryny - aplikacji ASP.NET Webforms opracowanej przez innego konsultanta. Wydawało się, że jest to stosunkowo prosta praca, ale po zapoznaniu się z kodem widać, że tak nie jest. Ta aplikacja nie została dobrze napisana. W ogóle. Jest bardzo podatny na ataki typu SQL injection, …

7
Czy prywatne, niemożliwe do odczytania adresy URL są równoważne z uwierzytelnianiem za pomocą hasła?
Chcę udostępnić zasób w sieci. Chcę chronić ten zasób: aby upewnić się, że jest on dostępny tylko dla niektórych osób. Mogę skonfigurować uwierzytelnianie oparte na haśle . Na przykład mogłem zezwolić na dostęp do zasobu tylko za pośrednictwem serwera WWW, który sprawdza przychodzące żądania poprawnych danych uwierzytelniających (być może w …

16
Kiedy poprawianie błędów staje się przesadne, jeśli w ogóle?
Wyobraź sobie, że tworzysz odtwarzacz wideo w JavaScript. Ten odtwarzacz wideo zapętla wideo użytkownika wielokrotnie za pomocą funkcji rekurencyjnej, dlatego przeglądarka too much recursion RangeErrorw pewnym momencie wyzwoli . Prawdopodobnie nikt nie użyje tak często funkcji pętli. Twoja aplikacja nigdy nie zgłasza tego błędu, nawet jeśli użytkownik opuścił pętlę aplikacji …

15
Czy stałe jednoznakowe są lepsze od literałów?
Ostatnio spotkałem klasę, która zapewnia prawie każdą pojedynczą postać jako stałą; wszystko od COMMAdo BRACKET_OPEN. Zastanawiasz się, czy było to konieczne; Przeczytałem „artykuł”, który sugeruje, że pomocne może być ciągnięcie literałów jednoznakowych do stałych. Jestem sceptyczny. Główną zaletą korzystania ze stałych jest to, że minimalizują konieczność konserwacji, gdy konieczna jest …

11
W jaki sposób wzrost złożoności systemów wpłynął na kolejne generacje programistów?
Jako „nowy” programista (po raz pierwszy napisałem wiersz kodu w 2009 r.) Zauważyłem, że stosunkowo łatwo jest stworzyć program, który wykazuje dziś dość złożone elementy, na przykład z platformą .NET. Tworzenie interfejsu wizualnego lub sortowanie listy można teraz wykonać za pomocą bardzo niewielu poleceń. Kiedy uczyłem się programowania, uczyłem się …

10
Jak powinienem przetestować losowość?
Rozważ metodę losowego tasowania elementów w tablicy. Jak napisałbyś prosty, ale solidny test jednostkowy, aby upewnić się, że działa? Wymyśliłem dwa pomysły, z których oba mają zauważalne wady: Potasuj tablicę, a następnie upewnij się, że jej kolejność różni się od poprzedniej. Brzmi to dobrze, ale kończy się niepowodzeniem, jeśli losowanie …

3
Jakie są rzeczywiste konsekwencje licencji Apache 2? [Zamknięte]
Chcę użyć SVG Edit do projektu. To oprogramowanie jest rozpowszechniane na licencji Apache 2. Widziałem to: wszystkim kopiom, zmodyfikowanym lub niezmodyfikowanym, towarzyszy kopia licencji wszystkie modyfikacje są wyraźnie oznaczone jako działanie modyfikatora wszystkie informacje o prawach autorskich, znakach towarowych i patentowych są dokładnie reprodukowane w rozpowszechnianych kopiach licencjobiorca nie używa …

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.