Pytania otagowane jako language-design

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


9
Dlaczego tak ograniczone wsparcie dla Design by Contract w większości nowoczesnych języków programowania?
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 …

12
Dlaczego większość języków programowania ma specjalne słowa kluczowe lub składnię do deklarowania funkcji? [Zamknięte]
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 …

4
Jak szybko może iść Go?
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, …


5
Dlaczego C # nie ma zasięgu lokalnego w blokach przypadków?
Pisałem ten kod: private static Expression<Func<Binding, bool>> ToExpression(BindingCriterion criterion) { switch (criterion.ChangeAction) { case BindingType.Inherited: var action = (byte)ChangeAction.Inherit; return (x => x.Action == action); case BindingType.ExplicitValue: var action = (byte)ChangeAction.SetValue; return (x => x.Action == action); default: // TODO: Localize errors throw new InvalidOperationException("Invalid criterion."); } } Był zaskoczony, …


2
Jakie są 4. i 5. generacja języków programowania? Czy jest ich więcej? [Zamknięte]
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 …




5
Dlaczego C # i Java używają równości odniesienia jako wartości domyślnej dla „==”?
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 …

6
Dlaczego języki programowania umożliwiają cieniowanie / ukrywanie zmiennych i funkcji?
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ę, …


4
Dlaczego .compareTo () jest w interfejsie, podczas gdy .equals () jest w klasie w Javie?
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ą …

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.