Gerçekten harika bir sonuç! - sayfa 7

 
MuruFigi >> :

İkinci sayfada, eğer öyleyse, derleyicideki bir hata hakkında değil, geliştiricilerin beyinlerindeki bir hata hakkında konuşmamız gerektiği konusunda hemfikirdim. Kusura bakmayın bu konuyu daha çok gülmek için açtım.

İşte şimdi anlamadığım şey şu.

MQL derleyicisi neye dayanır? Sonuçta, eğer normal bir dilde geliştirilmişse, o zaman programcıların ilk etapta çarpma ve toplama işlemlerinin eşit önceliğe sahip olması gerçeği karşısında şaşırmış olmaları gerekirdi. Bunu nasıl özleyebilirler? Gerektiğinde ve gerekmediği yerde parantezleri arka arkaya koymak gerçekten nedir? Bu arada, çok sayıda parantez de kodun görünürlüğünü kötüleştirir. Ve programcılarınız 2 + 3 * 4 gibi aritmetik işlemleri başlattığında, ayrıca 2 + (3 * 4) yazarlar, aksi takdirde, Allah korusun, C++ derleyicisinde bir hata ve 100 yüz parantezin iç içe geçmesi bir ifade elle hesaplanmış mutluluk olmalı :)

Bu, C, Java, Fortran, MathCad vb. geliştiricilerin kafasındaki bir hatadır. vb. vb.


Nasıl hala anlamıyorsun!


not


Her ne kadar itiraf edeyim ki, bunu anlamam da biraz zaman aldı.

 
sol писал(а) >>

Her ne kadar itiraf edeyim ki, bunu anlamam da biraz zaman aldı.

Bazı mantıksal kombinasyonların neden olması gerektiği gibi yapılmak istemediği ancak şimdi anlaşıldı. Yapay parantez eklemek zorunda kaldım.

Daha önce hiçbir şey bunu açıklayamazdı. Ama konuyu da açmadı. Rastgele, doğru çözümü buldum. Ama her şeyi dürtmek için ne kadar dürtmen gerekiyor?

 
nen >> :

Bazı mantıksal kombinasyonların neden olması gerektiği gibi yapılmak istemediği ancak şimdi anlaşıldı. Yapay parantez eklemek zorunda kaldım.

Daha önce hiçbir şey bunu açıklayamazdı. Ama konuyu da açmadı. Rastgele, doğru çözümü buldum. Ama her şeyi dürtmek için ne kadar dürtmelisin?

RTFM


*rofl*

 
MuruFigi >> : Neden herkes ihtiyaç duyduğu ve ihtiyaç duymadığı yerlere parantez koyuyor?

Her şey değil elbette, ama her zaman bahse girerim. Ve tamamen alışkanlıktan, bu "geliştiricilerin kafasındaki hata"yı öğrenmeden çok önce onları giydim. Ve parantez koyarak onsuz yapabilirsem, öncelikleri netleştirmek için neden bir kez daha yardıma tırmanmalıyım? Bu nedenle, bu "böcek" beni eğlendirse de benim için bir felaket olmadı.

Ve daha önce, C'de boolean bir şey yazdığımda, öncelikler hakkında hiçbir şüphem olmamasına rağmen, onları da ayarladım. Ve dürüst olmak gerekirse, parantezsiz karmaşık bir boole ifadesinin pek okunaklı olmadığını düşünüyorum.

Not Sadece 2+3*4 gibi saçma örnekler vermemenizi rica ederim. Aritmetik işlemler için böyle bir öncelik hilesi olsaydı, kesinlikle pişmanlık duymadan buna gerçek bir bug derdim.

Bu arada:

  1. dağılım yasası (parantez açılımı):
    x 1 veya (x 2 ve x 3 ) = (x 1 veya x 2 ) ve (x 1 veya x 3 )
    x 1 ve (x 2 veya x 3 ) = (x 1 ve x 2 ) veya (x 1 ve x 3 )
  2. ...

Buradan, Boole cebri bakış açısından, or ve ve işlemlerinin aynı önceliğe sahip olduğu sonucu çıkar.

Andrey, Boole cebrindeki bu işlemlerin önceliklerinin eşit olduğunu tam olarak nereden çıkardın? Karşı örnek:

a=1, b=0, c=0 için

(a veya b) ve c = (1 veya 0) ve 0 = 0

a veya (b ve c) = 1 veya (0 ve 0) = 1

 
Geliştirici yabancı olsaydı, konuyu başlatan kişiye en azından hatayı bulduğu için teşekkür edilirdi. Ve konu, düzeltme çalışmalarının halihazırda tüm hızıyla devam ettiği gerçeğine atıfta bulunarak çabucak ele alınacaktı: itibarlarına değer veriyorlar (çok paraya mal oluyor). Ve "aptalın kendisi" diyoruz, belgeleri, şartnameyi, tabloyu vb. Şimdi, MT4 için rekabet olsaydı, tamamen farklı olurdu.
 
MuruFigi >> :

MQL derleyicisi neye dayanır? Sonuçta, eğer normal bir dilde geliştirilmişse, o zaman programcıların ilk etapta çarpma ve toplama işlemlerinin eşit önceliğe sahip olması gerçeği karşısında şaşırmış olmaları gerekirdi. Bunu nasıl özleyebilirler?

İşte başka bir çarpıtma örneği. Aynı zamanda, konuyu başlatan kişi eğlence için bir konu başlattığını ve bu noktada hala belgeleri okuduğunu bildiriyor.

 
Rosh >> :

İşte başka bir çarpıtma örneği. Aynı zamanda, konuyu başlatan kişi eğlence için bir konu başlattığını ve bu noktada hala belgeleri okuduğunu bildiriyor.

Doprikalovsya :-) Belki de büyük keşiflerin tamamen farklı amaçlarla kolaylıkla yapıldığı doğrudur.

 
Galaxy >> :

Doprikalovsya :-). Büyük keşiflerin tamamen farklı amaçlarla doğal olarak yapıldığı doğru olabilir.

Bu "keşif" büyük olanlara atıfta bulunmak pek mantıklı değil. Sadece gerçeği belirtmeye ve unutmaya değer. Ve genel olarak, Boole işlemlerinin önceliği konusu çok zorlayıcıdır: geliştiriciler için parantez olmadan farklı işlemlerle Boole ifadeleri oluşturmayı yasaklamak ve bu tür yapıları hatalı olarak değerlendirmek daha ucuz olacaktır.

 
Mathemat >> :

Andrey, Boole cebrindeki bu işlemlerin önceliklerinin eşit olduğunu tam olarak nereden çıkardın? Karşı örnek:

a=1, b=0, c=0 için

(a veya b) ve c = (1 veya 0) ve 0 = 0

a veya (b ve c) = 1 veya (0 ve 0) = 1

a = güzel

b = akıllı

c = zengin

x= a && b && c ;

y = bir || b || c;


Acaba Andrey neyi tercih ederdin: x = 1 mi yoksa y = 1 mi?

 
Mathemat >> :

Andrey, Boole cebrindeki bu işlemlerin önceliklerinin eşit olduğunu tam olarak nereden çıkardın?

İşlemlerin simetrisinden. Ve işlemlerin simetrisi doğrudan seçilen formüllerden gelir.

Simetrik işlemlerden biri diğerine göre öncelikli olamaz.

galaksi >> :

Andrei'nin neyi tercih edeceğini merak ediyorum: x = 1 veya y = 1?

Kişisel ve alaycı olmadan tartışmayı tercih ederim, Eric.

______________________

ben ne için

A && B || ifadesinin sonucu C, Boole cebri bakış açısından tanımsızdır.