Güle güle robot, yaşasın delilik - sayfa 11

 

Değişken adını gizleme ile ilgili olarak:

simpleton zaten intel derleyicisi hakkında yazdı, gcc ve clang benzer bir duruma sahip. Çok katı modda derlerken (mesajlar açısından):

gcc(clang) -Wall -Wextra

Derleyici bu sorundan şikayet etmez. Şikayetlerin gizlenmesi ayrı bir -Wshadow seçeneği ile etkinleştirilir. Onlar. c++ derleyicilerinde (MSVC hariç) doğrulamanın kendisi zor değildir. Ancak -Wshadow'un varsayılan olarak etkinleştirildiği herhangi bir ide (gcc'ye dayalı, örneğin qt oluşturucu, kod blokları ...) görmedim.

Niye ya? Muhtemelen çoğunluk için bu mesajın faydası şüpheli olduğu için.

 
Pavlick :

Değişken adını gizleme ile ilgili olarak:

simpleton zaten intel derleyicisi hakkında yazdı, gcc ve clang benzer bir duruma sahip. Çok katı modda derlerken (mesajlar açısından):

Görünüşe göre, yanıltıcı "katı derleyici modu" ile statik analizörlerin gerçek işini hiç kullanmadığınız için karıştırıyorsunuz.

Derleyici 1-2 dakika içinde derlemeyi tamamlar, aynı koddaki analizörler ise birkaç saat (PVS Studio) ve onlarca saat (CPP Kontrolü) çalışır. Bu nedenle, sonuçların değişen kalitesi ve derinliği.

 

Hepiniz hoşgeldiniz.

MQL4'teki yeniliklerle "birdirbir" ve çılgınlığın durmadığı neredeyse bir yıl oldu. "Ve hiçbir şey değişmedi!" (ile).

Daha önce, Metaalıntılar zayıf dilleri nedeniyle azarlanırdı, şimdi ise ekstra "su" için. Daha az sorun yoktu.

Kendimden şunları ekleyebilirim.

Tüccarlar, programcı olmayanlar ve acemi programcılar basit bir algoritma ve kod uygulayabilir.

Yeni yapılarda derlenmeyen büyük bir hindi, baykuş vb. veri tabanınız varsa, daha yakından bakmak ve "göğsünüzü sallamak" mantıklıdır. Kullanışlı olanı bırakın ve yeni yapılar için yeniden yazmak ve hata ayıklamak için zaman ayırın.

Gerçek deneyimli programcılar veya onlar olmak isteyenler her zaman yenilikleri takip eder, hatalar ve aksaklıklar onların ekmeğidir. İyi programlama olarak kabul edilen hatasız kod yazıyor. Metaquotes'ın tüm yeniliklerini araştırmak için gücünüz, zamanınız, fırsatınız veya isteğiniz yoksa, akıcı olduğunuz dili kullanın. DLL iptal edilmedi, hata ayıklanmış algoritmalarınızı bağlayın.

 
Andrei01 :

Test ortamları, kod kalitesi gereksinimlerinin çok yüksek olduğu çiplerin yazılım tasarımlarının işlevsel doğrulaması için yazılım ürünlerinde yaygın olarak kullanılmaktadır. Ayrıca, işlevsel kabuk, herhangi bir çip tasarım kodunun geliştirilmesinin ayrılmaz bir parçasıdır. Sıradan yazılım projeleri yazarken, birçok programcının bu tür işlevsel testler hakkında bir fikri bile yoktur, bunun nedeni, bu tür testleri sıfırdan yazmanın, proje yazılırken doğrudan yazmaktan daha fazla zaman alabilmesi ve yalnızca orada olduğunda gerekçelendirilmesidir. yüksek kaliteli kod yazmak için bir gerekliliktir veya bir tanesinin birden fazla versiyonu planlanmıştır ve aynı projedir. Öte yandan, iyi yazılmış bir test ortamı, hata ayıklama ve kod doğrulama süresinden önemli ölçüde tasarruf sağlar.

Statik analiz de kullanılır, ancak yalnızca çok yüzeysel ve birincil sözdizimi denetimi olarak kullanılır.

Test ortamları, test ortamlarıdır. Test ortamı, test ettiği ürün için "keskinleştirilmiştir".

Genel araçları kastettim - analiz edilen ürün hakkında "hiçbir fikri olmayan" ve bu nedenle herhangi bir üründeki sorunları analiz edip bulabilenler.

 
Renat :

Aptal, ne saçmalık.

"Ne saçmalık" - bu, görünüşe göre, pozisyonların tam bir uyumsuzluğu anlamına gelir.

Renat :

Toplam kalite kontrol düzeyine yükseldiğinizde bunu ancak o zaman anlayacaksınız. Bu arada, bireysel gururlu bir programcının algı düzeyinde kalırsınız, "beni kontrol etmemek akıllıca olur, kontrolün asla çalışmayan ayrı araçlar olmasına izin verin" ile ortaya çıkmaya devam edeceksiniz.

"Toplam kalite kontrolü" neden bu kadar düşük bir seviyeye izin veriyor?

Örneğin:

 #property strict

/******************************************************************************/
class A {
private :
  A() { Print ( "A::A()" ); }

public :
   static void method1() {
     //A a; // 'A::A' - cannot call private member function      3.mq4   10      7
  }

   static void method2() {
    A *a = new A; // А здесь private member function великолепно вызывается
     delete a;
  }
};

/******************************************************************************/
void OnStart () {
  A::method1();
  A::method2();
}

Yöntem2'de bir nesne oluşturulduğunda yapıcı çağrılır:

 00 : 50 : 23 Script 3 EURUSDm,M5: loaded successfully
00 : 50 : 23 3 EURUSDm,M5: initialized
00 : 50 : 23 3 EURUSDm,M5: A::A()
00 : 50 : 23 3 EURUSDm,M5: uninit reason 0
00 : 50 : 23 Script 3 EURUSDm,M5: removed

Neden dinamik olarak bir nesne oluştururken her şey yolunda, yani özel kurucu nesne yönteminden kullanılabilir ve otomatik olduğunda, özel kurucu aniden kullanılamaz durumda mı?

MQL'de basitten biraz daha karmaşık bir şey yapmayı şahsen reddettim çünkü bu benim için çok zor: Her zaman işe yaramayan bir şeye rastlarım.

Ancak C/C++ derleyicileri ile böyle bir sorunum yok.

"Beni kontrol etmemek mantıklı, kontrol asla çalışmayan ayrı araçlar olsun" sorunu doğrudan psikoloji ile ilgilidir. Burada programcının kendini zorlayabilmesi ve bu psikolojiyi atlatmak için teknolojiyi psikolojiye uyarlamaya çalışmaması için psikolojinin düzeltilmesi gerekiyor.

Ben icat etmiyorum, bireysel araçlar gözlerimin önünde düzenli olarak başarıyla kullanılıyor ve çalışmalarının sonucu da hataları ortadan kaldırmak için başarıyla kullanılıyor.

Renat :

Hatalarla mücadele ediyoruz, ancak aynı zamanda çok şey ekliyor ve geliştiriyoruz.

Belki de öncelikler kalite pahasına eklemeye ve iyileştirmeye kaydırılmıştır. Ama sonra artık onun tam kontrolü değil.

Renat :

Cuma günü, yürütme ve test hızında belirgin iyileştirmeler içeren bir MT4 sürümü yayınlanacak.

Ve dilin performansı açısından iyileştirmeler - bu durumda, sadece dinamik olarak bir nesne yaratma durumu için değil, nesnenin yöntemlerinden özel bir kurucunun mevcudiyetini kastediyorum - zaten orada olacak mı?

Renat :

C++'dan farklı olarak MQL, ham referansların reddedilmesi nedeniyle (dll'de çıkış yoksa) kesinlikle tehlikeli değildir ve genel olarak yönetilen bir dildir.

Diyelim ki "C++ tehlikeli ve intihara meyilli" ve "MQL kesinlikle tehlikeli değil".

MQL için güvenlik açısından elde edilmek istenenden çok uzak bir dili temel almak, yani tam olarak "tehlikeli ve intihar" temelinde "kesinlikle güvenli" bir dil oluşturmak neden gerekliydi? ?

 
Pavlick :

tamam?


  Merhaba tavus kuşu!

İşte yine pansayım!

Komut dosyasını farklı MT4'te arayarak kodunuzu test ettim.

ve garip şeyler ortaya çıktı!

Kodunuz Pepperston'ın MT4 yapı 670'inde harika çalışıyor

(Avustralya) ama Alpari'nin MT4 build 670'i üzerinde çalışmak istemiyor!

Alpari meydan okumasında     kullanıcı 32.dll _                 tuhaf gidiyor!

Önce 2 DLL çağrılır (kodda verilmemesine rağmen!)

o zamanlar   isminde     kullanıcı 32.dll _            ama onu kütüphaneye atarlar!

Ama aynı zamanda kütüphaneden aramanız gerekiyor!

Görünüşe göre Alpari meydan okumayla mücadele ediyor

yani, kodun çalışmasında açık bir müdahale var!

Karşılaştırma için 2 resim eklenmiştir.

Sana başarılar diliyorum!

panza

oo-bild zu iğrenç!

MT4-Pepperstone-user32.dll

MT4-Alpari- KERNEL32 .dll,GDI.dll,E:\metaQuotes\Terminal\F...OBO\MQL4\Libraries\user32.dll

















 
simpleton :

"Ne saçmalık" - bu, görünüşe göre, pozisyonların tam bir uyumsuzluğu anlamına gelir.

Bu, bir kişinin birçok yazılım ürününün rekabetçi bir pazara sunulmasına öncülük etme konusunda açıkça daha fazla deneyime sahip olduğu anlamına gelir.


"Toplam kalite kontrolü" neden bu kadar düşük bir seviyeye izin veriyor?

Konuyu, kalite kontrolün genel ilkelerinin tartışılmasından belirli bir çözümün belirli eksikliklerine aktarmak gerekli değildir. Bu yöntem kabul edilemez, çünkü herhangi bir üründe her zaman herhangi bir kusur bulabilirsiniz.

Örneğin:

Yapıcı, nesne yöntem2'de oluşturulduğunda çağrılır:

Neden dinamik olarak bir nesne oluştururken her şey yolunda, yani özel kurucu nesne yönteminden kullanılabilir ve otomatik olduğunda, özel kurucu aniden kullanılamaz durumda mı?

Bu sadece aşırı korumanın sonuçlarıdır "bir sınıfın statik bir yönteminin sınıfın içeriğine tırmanma hakkı yoktur". Bu durumda erişim kontrolünü zayıflatmak gerekir.

MQL'de basitten biraz daha karmaşık bir şey yapmayı şahsen reddettim çünkü bu benim için çok zor: Her zaman işe yaramayan bir şeye rastlarım.

Çalışan bir örnek verin ve "Her şeyi özellikle çarpıttım, erişimi kapattım ve ardından sınırda davranışa hitap etmeye başladım" gibi bir durum değil.


Ancak C/C++ derleyicileri ile böyle bir sorunum yok.

Farklı türden sorunlar var. Ayrıca, statik analizörler kullanmadığınızı hesaba katarsak, açıkçası bunlardan çok daha fazlası vardır.


"Beni kontrol etmemek mantıklı, kontrol asla çalışmayan ayrı araçlar olsun" sorunu doğrudan psikoloji ile ilgilidir. Burada programcının kendini zorlayabilmesi ve bu psikolojiyi atlatmak için teknolojiyi psikolojiye uyarlamaya çalışmaması için psikolojinin düzeltilmesi gerekiyor.

Ben icat etmiyorum, ayrı araçlar gözlerimin önünde düzenli olarak başarıyla kullanılıyor ve çalışmalarının sonucu da hataları ortadan kaldırmak için başarıyla kullanılıyor.

Belki de öncelikler kalite pahasına eklemeye ve iyileştirmeye kaydırılmıştır. Ama sonra artık onun tam kontrolü değil.

Bu sadece bir kelime oyunu. Pozisyonunuz daha önce açıkça belirtilmişti "Kontrol edilemiyorum", yani evet, "birinin önünde, bir yerde kullanıyor ama kimse üzerimde sopayla durmuyor ve ben de kullanmıyorum."


Ve dilin performansı açısından iyileştirmeler - bu durumda, sadece dinamik olarak bir nesne yaratma durumu için değil, nesnenin yöntemlerinden özel bir kurucunun mevcudiyetini kastediyorum - zaten orada olacak mı?

"Basit" programlarınıza kasıtlı geziler koymak ister misiniz "Yapıcıyı özel olarak saklayacağım, statik bir yöntem oluşturacağım ve sonra onu gizli kurucuya çekeceğim"?


Diyelim ki "C++ tehlikeli ve intihara meyilli" ve "MQL kesinlikle tehlikeli değil".

MQL için güvenlik açısından elde edilmek istenenden çok uzak bir dili temel almak, yani tam olarak "tehlikeli ve intihar" temelinde "kesinlikle güvenli" bir dil oluşturmak neden gerekliydi? ?

Genel diller için "farklı bir temel" bulabiliyor musunuz?

Yani, her ikinci programcıya bir dil verebilmek ve birkaç saat içinde üzerine zevkle yazmaya başlayacak ve onu iğrenme ve tacizle dışarı atmayacak mı? Böylece tüccarlar Easy Language'e baktı ve onu çöpe attı ve MQL4/MQL5 onu kullanmaktan ve geliştirmekten mutlu.

Yaygın olarak kullanılan dillerin çoğu, C/C++'da olduğu gibi bina yapılarının temel ilkelerine dayanmaktadır. Bu yüzden iyi bilinen bir temel aldık, bağlantılarla en tehlikeli şeyleri kaldırdık, DRM ekledik ve güvenli ve güvenli bir dil elde ettik.

Sonuç olarak, at sırtındayız ve rakipler yanlış gidiyor, ancak onlara göründüğü gibi daha ucuz yönler.

 
Renat :
Bu, bir kişinin birçok yazılım ürününün rekabetçi bir pazara sunulmasına öncülük etme konusunda açıkça daha fazla deneyime sahip olduğu anlamına gelir.

Bu arada, liderlik deneyimi hakkında. 5 yıl önce, mql5 forumunda MT5'in beklentileri hakkında tartışmıştık, o zaman zamanın söyleyeceğini söyledim. Aradan 5 yıl geçti ve topluluğun MT5'i reddettiğini görüyoruz. Liderlik deneyimi hatalara karşı garanti vermez. Bir kişi bir alanda deneyime sahip olsa bile, yine de hata yapabilir. Rakip pazara veya daha doğrusu rakiplere gelince, en sonunda.

Ancak, bu durumda, birçok yazılım ürününü piyasaya sürme deneyiminden değil, ürünün kalitesinden ve özellikle derleyiciden ve yüksek kaliteye ulaşmak için araçlar ve yöntemlerden bahsediyoruz.

Renat :
Konuyu, kalite kontrolün genel ilkelerinin tartışılmasından belirli bir çözümün belirli eksikliklerine aktarmak gerekli değildir. Bu yöntem kabul edilemez, çünkü herhangi bir üründe her zaman herhangi bir kusur bulabilirsiniz.


Bu sadece aşırı korumanın sonuçlarıdır "bir sınıfın statik bir yönteminin sınıfın içeriğine tırmanma hakkı yoktur". Bu durumda erişim kontrolünü zayıflatmak gerekir.

Genel ilkeleri, teoriyi tercüme etmiyorum - teorinin kendisi için değil, pratikte uygulama için. Aynı C/C++ derleyicilerinde böyle ciddi "kusurlar" bulamazsınız.

Bu durumda "statik bir sınıf yönteminin sınıfın içeriğine tırmanma hakkı yoktur" diyorsanız, dinamik olarak bir nesne oluştururken neden bu hakka zaten sahip?

Peki ya statik olmayanın da aynı şekilde davranması gerçeğine ne demeli?

 #property strict

/******************************************************************************/
class A {
private :
  A() { Print ( "A::A()" ); }
  ~A() { Print ( "A::~A()" ); }

public :
   void method() { // Метод - обычный, никакой не статический
    A a;
  }

};

/******************************************************************************/
void OnStart () {
}

Aynı hatalar:

'3.mq4' 3.mq4   1       1
'A::~A' - cannot call private member function   3.mq4   11      7
'A::A' - cannot call private member function    3.mq4   11      7
2 error(s), 0 warning(s)                3       1

Tamam, "bir sınıfın içeriğine tırmanma" yasağını düşünelim:

 #property strict

/******************************************************************************/
class A {
private :
  A() { Print ( "A::A()" ); }
  ~A() { Print ( "A::~A()" ); }
  A( const A &a) { Print ( "A::A(const A &)" ); }
   void operator =( const A &a) { Print ( "A::operator =()" ); }
   void f() { Print ( "A::f()" ); }

public :
   static void assign(A &l, const A &r) {
    l = r;
  }

   static void method() {
    A *p = new A, b(p);

    b = p;
    b.f();
     delete p;
  }

};

b nesnesi, kopya oluşturucu çağrılarak oluşturulur, ardından "operator =" çağrılarak atama yapılır, f() yöntemi çağrılır ve tüm bu yapıcılar, operatörler ve yöntemler özeldir, yani statik yöntem() yöntem "içerik sınıfına tırmanacak":

 00 : 59 : 18 Script 3 EURUSDm,M5: loaded successfully
00 : 59 : 18 3 EURUSDm,M5: initialized
00 : 59 : 18 3 EURUSDm,M5: A::A()
00 : 59 : 18 3 EURUSDm,M5: A::A( const A &)
00 : 59 : 18 3 EURUSDm,M5: A:: operator =()
00 : 59 : 18 3 EURUSDm,M5: A::f()
00 : 59 : 18 3 EURUSDm,M5: A::~A()
00 : 59 : 18 3 EURUSDm,M5: A::~A()
00 : 59 : 18 3 EURUSDm,M5: uninit reason 0
00 : 59 : 18 Script 3 EURUSDm,M5: removed

İlkine çok yakın olan başka bir örnek düşünün:

 #property strict

/******************************************************************************/
class A {
private :
  A( int i = 0 ) { Print ( "A::A(int i = " , i, ")" ); }
  ~A() { Print ( "A::~A()" ); }
public :

   static void method() {
    A a;
  }
};

/******************************************************************************/
void OnStart () {
  A::method();
}

Derleme hatası - hem yapıcı hem de yıkıcı kullanılamaz:

'3.mq4' 3.mq4   1       1
'A::~A' - cannot call private member function   3.mq4   11      7
'A::A' - cannot call private member function    3.mq4   11      7
2 error(s), 0 warning(s)                3       1

Şimdi, hiçbir şeyi değiştirmeden, a değişkenini yapıcıdaki varsayılan değerden farklı bir değerle başlatıyoruz:

 #property strict

/******************************************************************************/
class A {
private :
  A( int i = 0 ) { Print ( "A::A(int i = " , i, ")" ); }
  ~A() { Print ( "A::~A()" ); }
public :

   static void method() {
    A a( 1 );
  }
};

/******************************************************************************/
void OnStart () {
  A::method();
}

Şimdi örnek derlenir ve çalışır:

 00 : 20 : 35 Script 3 EURUSDm,M5: loaded successfully
00 : 20 : 35 3 EURUSDm,M5: initialized
00 : 20 : 35 3 EURUSDm,M5: A::A( int i = 1 )
00 : 20 : 35 3 EURUSDm,M5: A::~A()
00 : 20 : 35 3 EURUSDm,M5: uninit reason 0
00 : 20 : 35 Script 3 EURUSDm,M5: removed

Statik bir yöntemin aniden "sınıfın içeriğine tırmanmasına" nasıl izin verildi?

Bu durumda bunun "aşırı koruma" değil, banal bir böcek olduğu oldukça açıktır. Toplam kalite kontrolü ile ilgili sözler elbette gürültülüdür, ancak gerçekler inatçı şeylerdir.

Renat :
Çalışan bir örnek verin ve "Her şeyi özellikle çarpıttım, erişimi kapattım ve ardından sınırda davranışa hitap etmeye başladım" gibi bir durum değil.

Lütfen, klasik singleton , yani C++ örnek bölümünde referans olarak açıklanan Myers singleton:

 class OnlyOne
{
public :
         static const OnlyOne& Instance()
        {
                 static OnlyOne theSingleInstance;
                 return theSingleInstance;
        }
private :        
        OnlyOne(){};
        OnlyOne( const OnlyOne& root);
        OnlyOne& operator =( const OnlyOne&);
};

Yeni açılan özellikle MQL4++'a bile geçiyor:

 #property strict

/******************************************************************************/
class OnlyOne
{
public :
         static OnlyOne *Instance()
        {
                 static OnlyOne theSingleInstance( 1 );
                 return GetPointer (theSingleInstance);
        }
private :        
        OnlyOne( int i = 0 ) { Print ( "Создан" ); };
        ~OnlyOne() { Print ( "Уничтожен" ); };
        OnlyOne( const OnlyOne &);
         void operator =( const OnlyOne &);
};

/******************************************************************************/
void OnStart () {
  OnlyOne *p = OnlyOne::Instance();
}

Derlenmiş ve yürütülmüştür:

 01 : 31 : 49 Script 3 EURUSDm,M5: loaded successfully
01 : 31 : 49 3 EURUSDm,M5: Создан
01 : 31 : 49 3 EURUSDm,M5: initialized
01 : 31 : 49 3 EURUSDm,M5: uninit reason 0
01 : 31 : 49 3 EURUSDm,M5: Уничтожен
01 : 31 : 49 Script 3 EURUSDm,M5: removed

OnlyOne::Instance()'ı çağırmak dışında herhangi bir yolla bir nesne yaratma girişimleri derleme hatasıyla sonuçlanacaktır.

Ve "Her şeyi özellikle büktüm, erişimi kapattım ve sonra sınırdaki davranışlara itiraz etmeye başladım" hakkında - yasa dışı bir şey mi kullanıldı?

Dilde mekanizmalar var - izin verilen dil sınırları içinde istediğim gibi kullanma hakkım var. Her durumda, C++ derleyicilerinde durum böyledir.

Dilin uygulanmasında hatalar varsa, evet, hatalar. Toplam kalite kontrolünden bahsediyorsunuz - bu yüzden pratikte MQL4++ derleyicisinin uygulama hatalarından kurtulun, böylece böyle bir kontrole sahip olduğunuz için hataları bulmak C++ derleyicilerinde olduğu kadar zor olacaktır. Hala bir ayrıştırıcının, gösterdiğim gibi hatalardan kurtulmanıza yardımcı olabileceğini düşünmüyorum.

Renat :
"Basit" programlarınıza kasıtlı geziler koymak ister misiniz "Yapıcıyı özel olarak saklayacağım, statik bir yöntem oluşturacağım ve sonra onu gizli kurucuya çekeceğim"?

Sevmek ya da sevmemekle ilgili değil. Bir araç var. Neden tüm özelliklerini kullanmayı reddetmeliyim?

Bu durumda, "beğendim" ile ilgili bile değil. Bu, Myers'ın çok sevdiği şeydir. Ve nedense kimse onu C++ derleyicilerine "kasıtlı geziler koymaya" çalışmakla suçlamaya çalışmıyor.

Renat :
Genel diller için "farklı bir temel" bulabiliyor musunuz?

Yani, her ikinci programcıya bir dil verebilmek ve birkaç saat içinde üzerine zevkle yazmaya başlayacak ve onu iğrenme ve tacizle dışarı atmayacak mı? Böylece tüccarlar Easy Language'e baktılar ve onu çöpe attılar ve MQL4/MQL5 onu kullanmaktan ve geliştirmekten memnun.

Yaygın olarak kullanılan dillerin çoğu, C/C++'da olduğu gibi bina yapılarının temel ilkelerine dayanmaktadır. Bu yüzden iyi bilinen bir temel aldık, bağlantılarla en tehlikeli şeyleri kaldırdık, DRM ekledik ve güvenli ve güvenli bir dil elde ettik.

Sonuç olarak, at sırtındayız ve rakipler yanlış gidiyor, ancak onlara göründüğü gibi daha ucuz yönler.

Bu kolay bir iş değil, önceden çözülmüş değil. Burada çok çaba sarf etmeniz gerekiyor. MQL kullanıcılarının büyük çoğunluğu programcı değildir. Ve bir dil tasarlarken, bu önemli ölçüde dikkate alınmalıdır. Ama sorun eminim çözülmüştür.

Bu nedenle, eski MQL4'e yapılar eklemek, MQL4++ için yapıldığı gibi, işlemlerin önceliği gibi bir şeyi temizlemek yeterliydi - bu makul bir uzlaşma olacaktır. MT4'ün başarısı, büyük ölçüde, diğer şeylerin yanı sıra, dilin "hilelerinin" olmamasından kaynaklanıyordu. Şimdi değil. Ve derleyicinin uygulanmasında çok daha fazla hata var, çünkü MQL4++ eski MQL4'ten çok daha karmaşık ve geliştirme ekibinin çok fazla değişmesi olası değil.

Renat :
Sonuç olarak, at sırtındayız ve rakipler yanlış gidiyor, ancak onlara göründüğü gibi daha ucuz yönler.

Burada size katılıyorum, ancak bunun esas olarak rakiplerin anlaşılmaz bir şey yapmasından kaynaklandığını düşünüyorum.

 
Renat :
Bu, bir kişinin birçok yazılım ürününün rekabetçi bir pazara sunulmasına öncülük etme konusunda açıkça daha fazla deneyime sahip olduğu anlamına gelir.


Konuyu, kalite kontrolün genel ilkelerinin tartışılmasından belirli bir çözümün belirli eksikliklerine aktarmak gerekli değildir. Bu yöntem kabul edilemez, çünkü herhangi bir üründe her zaman herhangi bir kusur bulabilirsiniz.

Bu sadece aşırı korumanın sonuçlarıdır "bir sınıfın statik bir yönteminin sınıfın içeriğine tırmanma hakkı yoktur". Bu durumda erişim kontrolünü zayıflatmak gerekir.

Çalışan bir örnek verin ve "Her şeyi özellikle çarpıttım, erişimi kapattım ve ardından sınırda davranışa hitap etmeye başladım" gibi bir durum değil.


Farklı türden sorunlar var. Ayrıca, statik analizörler kullanmadığınızı hesaba katarsak, kesinlikle daha fazla büyüklük sırası vardır.


Bu sadece bir kelime oyunu. Pozisyonunuz daha önce açıkça belirtilmişti "Kontrol edilemiyorum", yani evet, "birinin önünde, bir yerde kullanıyor ama kimse üzerimde sopayla durmuyor ve ben de kullanmıyorum."


"Basit" programlarınıza kasıtlı geziler koymak ister misiniz "Yapıcıyı özel olarak saklayacağım, statik bir yöntem oluşturacağım ve sonra onu gizli kurucuya çekeceğim"?


Genel diller için "farklı bir temel" bulabiliyor musunuz?

Yani, her ikinci programcıya bir dil verebilmek ve birkaç saat içinde üzerine zevkle yazmaya başlayacak ve onu iğrenme ve tacizle dışarı atmayacak mı? Böylece tüccarlar Easy Language'e baktı ve onu çöpe attı ve MQL4/MQL5 onu kullanmaktan ve geliştirmekten mutlu.

Yaygın olarak kullanılan dillerin çoğu, C/C++'da olduğu gibi bina yapılarının temel ilkelerine dayanmaktadır. Bu yüzden iyi bilinen bir temel aldık, bağlantılarla en tehlikeli şeyleri kaldırdık, DRM ekledik ve güvenli ve güvenli bir dil elde ettik.

Sonuç olarak, at sırtındayız ve rakipler yanlış gidiyor, ancak onlara göründüğü gibi daha ucuz yönler.

 

Merhaba forumcular!

yararlanmak istiyorum   mevcudiyet   bu konu üzerinde   renata

ve MT4'ü geliştirmek için birkaç teklifte bulunun!

herkes biliyor   zamanla, MT4 daha da kötü çalışıyor   ve daha kötüsü

o zaman fare-finito itaat etmez!

yeni MT4'e geçmeniz ve sürüklemeniz gerekiyor

tüm çöpler (göstergeler, uzmanlar)!

bu birkaç günlük iş!

şimdi olmasına rağmen   DLL, DRIVER vb. için onarım programları var...

neden MT4'ün kendisi için bir derleyici yapmıyorsunuz?

bunun için kurulum sırasında 2MT4'e sahip olmanız gerekir (bir standart ve ikinci çalışan)

ve periyodik olarak   bunları karşılaştırın ve çalışan MT4'teki hataları düzeltin.

ikinci teklif, sadece fiyat çizelgeleri değil, aynı zamanda

hacim büyümesi ile çarpılan grafikler fiyatı oluşturun!

sonra ne olduğu hemen belli oldu (gerçek ticaret veya nakit para

dts'yi durdurur)

Anlayış düzeyi yüksek kişiler için bunun basit bir mesele olduğunu düşünüyorum!

pansa

Neden: