"MQL5 Programlama Temelleri: Listeler" makalesi için tartışma - sayfa 9

 
C-4:
Belki de "normal uygulama" derken şablonlar üzerinde uygulamayı kastediyorsunuz.
Neymiş o? Şablonlar üzerinde ne demek istiyorsunuz? Programlama yaparken tuşlara parmaklarınızla basmanın özel bir yolu mu?
 
Integer:
Nasıl bir şey bu? Kalıplar derken neyi kastediyorsun? Programlama yaparken parmaklarınızla tuşlara basmanın özel bir çarpık yolu mu?

Eski derleme zamanı makro ikame yönteminin bir mirası olan şablonlar, aslında nesne yönelimli programlama için uygunluklarını uzun zaman önce kaybetmişlerdir.

Modern dillerde bu tür görevler çalışma zamanı araçları ile çözülür, örneğin C#'ta generics, dinamik tip tanıma RTTI ve değişken tiplerin kullanımı.
Elbette hala şablonları seven eski çocuklar var, ancak bir programcı olarak IMHO emekli olma zamanının geldiğinin bir işaretidir.

 
revers45:

Eski derleme zamanı makro ikame yönteminin bir mirası olan şablonlar, aslında nesne yönelimli programlama ile ilgilerini çoktan kaybetmişlerdir.

Modern dillerde bu tür görevler çalışma zamanı araçları ile çözülür, örneğin C#'ta jenerikler, dinamik tip tanıma RTTI ve varyant tiplerin uygulanması.
Elbette, şablonları seven eski çocuklar hala var, ancak IMHO bir programcı olarak emekli olma zamanının geldiğinin bir işaretidir.

Okumak komik ) şablonlar uzun zamandır makro ikamelerinden uzaklaşmış ve ayrı bir paradigma olarak oldukça başarılı bir şekilde var olmuştur.

C#'taki jenerikler sadece çok azaltılmış şablonlardır ve aslında çalışma zamanı değil derleme zamanıdır, bu nedenle hızları daha yüksektir).

Ancak sadece RTTI ve varyant türleri bazı kötü düşüncelere işaret ediyor....

____________________

Tamam, tüm bunlar harika elbette. Ancak MQL5'te yalnızca şablon işlevleri vardır, sınıflar yoktur (olacak mı?). Dolayısıyla, şablonlar üzerindeki listeler mevcut araçlarla gerçekleştirilemez.

 
TheXpert:

Okuması komik) şablonlar uzun zamandan beri makro ikamelerinden uzaklaştı ve ayrı bir paradigma olarak oldukça başarılı bir şekilde var oldu.

C#'taki jenerikler sadece çok azaltılmış şablonlardır ve genel olarak çalışma zamanı değil, derleme zamanı nedeniyle kullanım hızları daha yüksektir).

Ancak sadece RTTI ve varyant türleri bazı kötü düşüncelere işaret ediyor....

____________________

Tamam, tüm bunlar harika elbette. Ancak MQL5'te yalnızca şablon işlevleri vardır, sınıflar yoktur (olacak mı?). Dolayısıyla, şablonlar üzerindeki listeler mevcut araçlarla gerçekleştirilemez.

Mutlusunuz çünkü fosil paradigmalar geçen yüzyıldan kalma sıcak anılarınız ve kapsamlı bir bilgi bagajı gibi görünüyor.

Ancak bu nedenle modern yaklaşımları gölgede bırakmaya gerek yok, çünkü MQ'lar müşterilerinin büyükbaba Macro Assembler ve ANSI C için nostaljik olduğunu varsayacak ve MQL5'i geliştirmek için önerileri görmezden gelecektir.
.

 
ters45, biraz yanlış, sonunda neden bahsettiğimi anladım. Aşırı yüklemeyi sağlamak için böyle bir evrensel fonksiyon yazma olasılığı vardır. Her argüman tipi için bir fonksiyon yazmazsınız, bir fonksiyon şablonu yazarsınız. Yukarıdaki arkadaşlar bir şeyi fena halde karıştırmışlar, burada sadece fonksiyon şablonlarımız var. Ama konuşma ne tür uzmanlarla başladı, ancak şablonlarla ilgili soru soruldu, bu yüzden hemen sessizlik geldi. Zeki konuşmacılar gibi görünüyorlar, hepsi bu.
[Silindi]  

Şablon olmadığından, bunu makrolarla yapabilirsiniz, hatta sanırım birisi bu konuda bir makale bile yazdı (şablonlar yerine makrolar) + stl'deki algoritmaların benzerleri de makrolar üzerinde. Ancak bence tüm bunlar standart kütüphanede şablonlar üzerinde olmalı, kendi kapsayıcılarınızı yazmak bir şekilde yanlıştır (sadece eğitim amaçlı yararlıdır), bir dizi ile yapmak daha kolaydır.

upd: makrolarda algoritmalara gerek yok, fonksiyon şablonları mevcut. Sanal insert/...'i sevmiyorum hata ayıklama modunda tip kontrollü asserts kullanmak daha iyidir.

 
Eki indirdim birçok yerde aşağıdaki gibi derleme hataları var: 'm_head' - sabit nesnenin üyesi değiştirilemez CiSingleList.mqh 504 & nbsp; 9
 
İyi bir makale ve bence Mql5 topluluğundaki herkes için yazılmış çünkü her şey açıkça açıklanmış.
 
Bu makalenin OOP hakkında net bir fikir verdiğini söylemeliyim, bunu okuduktan sonra nasıl çok şey kazandığımdan etkilendim, bir selam alıyorum
 

Merhaba,

test_MQL5_List.mq5 dosyasını derlemeye çalıştığımda aşağıdaki hataları alıyorum:

'm_head' - sabit nesnenin üyesi değiştirilemez CiSingleList.mqh 504 9
'm_tail' - sabit nesnenin üyesi değiştirilemez CiSingleList.mqh 505 9
'm_size' - sabit nesnenin üyesi değiştirilemez CiSingleList.mqh 496 9