Gdybyś zaprojektował język programowania, jak byś to zrobił? Jakie funkcje byś wprowadził? Co byś pominął? Pisanie statyczne czy dynamiczne? Mocno czy słabo napisane? Skompilowane lub zinterpretowane? Uzasadnij swoje odpowiedzi.
Niedawno odkryłem Design by Contract (DbC) i uważam, że jest to niezwykle interesujący sposób pisania kodu. Wydaje się, że oferuje między innymi: Lepsza dokumentacja. Ponieważ umowa jest dokumentacją, nie można być nieaktualnym. Ponadto, ponieważ umowa określa dokładnie, co robi procedura, pomaga w ponownym użyciu. Prostsze debugowanie. Ponieważ wykonywanie programu kończy …
Większość języków programowania (zarówno języki dynamiczne, jak i statyczne) mają specjalne słowa kluczowe i / lub składnię, która wygląda znacznie inaczej niż deklarowanie zmiennych dla deklaracji funkcji. Widzę funkcje tak samo, jak deklarowanie innego nazwanego bytu: Na przykład w Pythonie: x = 2 y = addOne(x) def addOne(number): return number …
Go jest jednym z niewielu języków, które powinny działać „blisko metalu”, tzn. Jest kompilowane, statycznie wpisywane i wykonuje kod natywnie, bez maszyny wirtualnej. To powinno dać mu przewagę prędkości nad Javą, C # i podobnymi. Wygląda jednak na to, że jest za Javą (patrz: Strzelanie do języków programowania ) Zakładam, …
Naprawdę lubię zarządzanie pamięcią oparte na zakresie (SBMM) lub RAII , ponieważ jest ono częściej (myląco?) Określane przez społeczność C ++. O ile mi wiadomo, z wyjątkiem C ++ (i C), nie ma dziś w użyciu żadnego innego głównego nurtu, który uczyniłby SBMM / RAII głównym mechanizmem zarządzania pamięcią, a …
Celem tego pytania nie jest zebranie listy prania funkcji języka programowania, bez których nie można żyć, lub które nie byłyby dostępne w głównym wybranym języku. To pytanie ma na celu ukazanie kącików obłędnego projektowania, o których większość projektantów języków może nie myśleć. Zamiast więc myśleć o funkcji języka X, pomyśl …
Ponieważ często jest klasyfikowany na poziomie szkoły / uczelni, popularne języki programowania (C #, Java, C ++) są językami 3. generacji (z wyższym poziomem abstrakcji z części fizycznych maszyny). Ponadto języki asemblera są klasyfikowane jako 2., a języki maszynowe jako języki 1. generacji. Początkowo myślałem, że SQL powinien być uważany …
Języki nawet gdzie masz wyraźnej manipulacji wskaźnik C jak to zawsze przekazywane przez wartość (ty może przekazać je poprzez odniesienie, ale nie jest to zachowanie domyślne). Jaka jest z tego korzyść, dlaczego tak wiele języków jest przekazywanych przez wartości, a inne przez referencje ? (Rozumiem, że Haskell jest przekazywany przez …
Ostatnio zacząłem patrzeć na rozwój Androida. To wróciło do świata tworzenia oprogramowania Java. Muszę przyznać, że kiedy ostatnio pracowałem z Javą, nie rozumiałem OOP tak bardzo, jak (myślę) teraz. Korzystając głównie z C # w mojej karierze, zauważam zaskakującą różnicę w sposobie używania Java i C #. W języku C …
Kiedy projektując własny język programowania, warto napisać konwerter, który pobiera kod źródłowy i konwertuje go na kod C lub C ++, aby móc użyć istniejącego kompilatora, takiego jak gcc, aby uzyskać kod maszynowy? Czy istnieją projekty wykorzystujące to podejście?
Zastanawiałem się przez jakiś czas, dlaczego Java i C # (i jestem pewien, że inne języki) domyślnie odnoszą się do równości ==. W programowaniu, które wykonuję (co z pewnością jest tylko niewielkim podzbiorem problemów programistycznych), prawie zawsze chcę logicznej równości podczas porównywania obiektów zamiast równości odniesienia. Próbowałem wymyślić, dlaczego oba …
Wiele najpopularniejszych języków programowania (takich jak C ++, Java, Python itp.) Ma pojęcie ukrywania / cieniowania zmiennych lub funkcji. Kiedy spotkałem się z ukrywaniem lub zacieniowaniem, były przyczyną trudnych do znalezienia błędów i nigdy nie widziałem przypadku, w którym uważam za konieczne korzystanie z tych funkcji języków. Wydaje mi się, …
W dyskusji na temat metod statycznych i metod instancji zawsze myślę, że Sqrt()powinna to być metoda instancji typów liczb zamiast metody statycznej. Dlaczego? Oczywiście działa na wartość. // looks wrong to me var y = Math.Sqrt(x); // looks better to me var y = x.Sqrt(); Typy wartości oczywiście mogą mieć …
Chcę wiedzieć, dlaczego .compareTo()jest w Comparableinterfejsie, podczas gdy metoda podobna .equalsjest w Objectklasie. Wydaje mi się arbitralne, dlaczego takiej metody .compareTo()nie ma już w Objectklasie. Aby użyć .compareTo(), zaimplementuj Comparableinterfejs i zaimplementuj .compareTo()metodę do swoich celów. W przypadku .equals()metody po prostu przesłonisz metodę w swojej klasie, ponieważ wszystkie klasy dziedziczą …
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.