Kolega powiedział, że słyszał o języku, który nie miał pojęcia "jeśli". Czy to jest możliwe? Jeśli tak, jaki to jest język?język bez, jeśli jest?
Odpowiedz
Uważam, że język musi mieć jakiś sposób dokonywania wyboru, aby być Turing-Complete. To jednak nie musi być twoją klasyczną formułą zwrotu.
Prawdopodobnie najbardziej znanym przykładem są języki wyrażenia regularnego. (a | b *) podejmuje decyzję na podstawie tego, co znajduje się po przeciwnych stronach tego |
. Niezupełnie stwierdzenie "jeśli".
Istnieją języki logiczne składające się z instrukcji. Wyniki dla zapytania są logiczną oceną, która sprawdza, czy wynik może zostać przyjęty przez grupę reguł, które zostały "zakodowane".
Na przykład patrz Prolog.
Poza tym może Prolog, nie znam żadnych konkretnych języków, ale mogę wymyślić kilka sposobów na język bez , jeśli mogą działać instrukcje. W rzeczywistości nie potrzebujesz również konstrukcji pętli. Oczywiście potrzebujesz jakiegoś warunkowego rozgałęzienia i pętli.
Jeśli, na przykład, miał następujące cechy: funkcje, pasujące na argumenty funkcji ML-styl deseniu i optymalizacji ogon rozmowę, można zaprogramować bez jeśli tych lub pętle.
foo() {
for (i = 1 to 10) {
if even(i) {
print "even"
}
}
}
stanie czegos potrzebowalem jak
print_if_true (true) {
print "even"
}
print_if_true (false) {}
foo_loop (11) {
}
foo_loop (n) {
print_if_true(even(n))
foo_loop(n+1)
}
foo() {
foo_loop(1)
}
lub ML-podobnej składni:
foo =>
let loop 11 => 0
n => p_i_t(n), loop n + 1
and p_i_t true => print "even"
_ => unit
in
loop 1
end
Oczywiście, trzeba jeszcze zwykłe operatory porównania, a następnie można wykorzystać proste prawda/Fałszywe dopasowywanie wzorca argumentów zamiast warunków warunkowych. Lub możesz dopasować dowolne wartości. Lub język może obsługiwać wyrażenia strażnika, które są w zasadzie instrukcjami, które określają, czy przeciążenie funkcji jest ważne, czy nie.
Powyższy przykład jest oczywiście wymyślony, a kod bez elementów ifs/loop jest o wiele brzydszy i trudniejszy do zrozumienia niż oryginał, ale pokazuje, jak możesz to zrobić. Więcej lub inne funkcje językowe mogą umożliwić pisanie czystych programów bez pętli if/loop.
Innym sposobem byłoby coś takiego, jeśli jest prawdziwa i fałszywa == 1 == 0.
[function(){else-clause}, function(){then-clause}][condition]()
Oznacza to, że przechowywanie true i false oddział w listy lub krotki lub cokolwiek, które mogą mieć być indeksowane przez true i false, a następnie użyć wyniku warunku jako indeksu, wyszukać gałąź i wywołać funkcję. Jeśli twój język obsługuje makra, może być możliwe przetłumaczenie tradycyjnych warunkowych na ten format.
Ta implementacja tablicy dała mi spokój. –
Smalltalk, który jest uważany za "prawdziwie" zorientowany obiektowo, nie ma instrukcji "if", i nie ma instrukcji "dla" ani "while". Są inne przykłady (takie jak Haskell), ale jest to dobre. Źródło: Without ifs
Smalltalk ma jednak zdefiniować 'ifTrue:' i 'ifFalse:', a także 'whileTrue:' i 'whileFalse:' – jer
programowania C++ szablon nie ma 'if' skonstruować ale Turing-complete poprzez szablon specjalizacji:
template <int N>
struct Factorial
{
enum { value = N * Factorial<N - 1>::value };
};
template <>
struct Factorial<0>
{
enum { value = 1 };
};
// Factorial<4>::value == 24
// Factorial<0>::value == 1
wow ............ – JoelFan
- 1. Jak uzyskać język bez kraju z CultureInfo
- 2. Domyślny język Django i18n bez prefiksów ścieżki
- 3. Potrzebny jest lepszy język szablonowy
- 4. Co to jest język kleju?
- 5. Czy język C++ jest całkowicie obiektowy?
- 6. Czy język może być Turing-complete bez wsparcia dla tablic?
- 7. Jaki jest najlepszy język skryptowy dla Unity3D
- 8. Dlaczego język asemblerowy jest nadal potrzebny, jeśli dysponujemy wysokopoziomowymi językami oferującymi zaawansowane narzędzia?
- 9. Język skryptowy PHP lub język programowania?
- 10. Jaki jest najlepszy język skriningu ekranu?
- 11. Jaki jest najlepszy język programowania uczenia maszynowego?
- 12. Jaki jest najbardziej zwięzły język programowania?
- 13. Roslyn rzuca Język "C#" nie jest obsługiwany
- 14. Jaki język jest napisany w języku html?
- 15. Język potrójnych obiektów MarkLogic
- 16. Język C: znaczenie operatora "#"?
- 17. Cakephp - Jeśli Żądanie jest JSON?
- 18. PHP Jeśli instrukcje/Else bez nawiasów
- 19. Lemat pompowania (język regularny)
- 20. Unity obsługuje język arabski
- 21. Tajemniczy język programowania
- 22. Jak zmienić język WebDrivera?
- 23. Język złożenia je funkcja skoku
- 24. Czy ktoś może mi powiedzieć, jaki to jest język?
- 25. jQuery język przeglądarki wykrywanie
- 26. Ustaw język nie działa select2
- 27. Nie ma czegoś takiego jak "język skompilowany" lub "język interpretowany"
- 28. Sprawdź język w aplikacji iOS
- 29. Język kompilacji do C
- 30. jak zmusić język Android
Co masz na myśli przez 'ifs'? Język może nie mieć jawnego operatora 'if', ale każdy język musi mieć * jakiś * sposób rozgałęzienia z jednego kawałka kodu na dwa inne fragmenty kodu, albo każde wejście do programu zawsze dawałoby takie samo wyjście. –
Czy moja odpowiedź zawierała to, czego szukałeś? Jeśli tak, proszę oznaczyć go jako odpowiedź na swoje pytanie. – Coops
Zobacz także [można napisać-dowolnie-algorytm-bez-an-if-statement] (http://stackoverflow.com/questions/1937362/can-you- write-any-algorithm-without-an-if-statement) – nawfal