English Русский 中文 Español Deutsch 日本語 Português 한국어 Français Italiano
Daha İyi Bir Programcı Nasıl Olunur? (2. Bölüm): Başarılı bir MQL5 programcısı olma yolunda şu 5 kötü alışkanlıktan daha kurtulun

Daha İyi Bir Programcı Nasıl Olunur? (2. Bölüm): Başarılı bir MQL5 programcısı olma yolunda şu 5 kötü alışkanlıktan daha kurtulun

MetaTrader 5Ticaret sistemleri | 12 Mart 2022, 14:08
202 0
Omega J Msigwa
Omega J Msigwa

Giriş


Bu makale dizisinde MQL5 programlama konusunda daha az deneyime sahip birini tanımlamak için noob kelimesini çok kullanıyorum (buna gücenmeyin). Bu sadece ifade etmemi kolaylaştırıyor. Bu, makalelerin özellikle acemiler veya yeni başlayanlar için olduğu anlamına gelmiyor. Tabi ki değil! Bu makale dizisi, sahip olduğunuz programlama deneyiminden bağımsız olarak herkese yöneliktir, çünkü sizi noob yapan ya da yapmayan şey kodlama yaptığınız yıl sayısı değil, alışkanlıklarınız ve davranışlarınızdır.

noob vs profesyonel kodlayıcı 


İlk makaleyi okumayanlar için işte burada. Bu makalede de noobları profesyonellere dönüştürme görevime devam ediyorum.

01: Başkalarından daha iyi olduğunuzu düşünmeyi bırakın


Muhtemelen bir süredir programlama yapıyorsunuz ve kendiniz için kod kütüphanesinde veya müşterileriniz için freelancete veya başka bir yerde harika Uzman Danışmanlar ve göstergeler oluşturmayı başardınız. İlerlemenizi fark etmeniz ve kendinize daha fazla güvenmeniz iyidir, bu, daha büyük zorlukların üstesinden gelmenize ve kendinizi daha da fazla geliştirmenize yardımcı olur. Ancak kibir tarafından ele geçirilmeyin. Şunu asla unutmayın:

"Kibirli bir insan kendini mükemmel görür. Cahilliğin en büyük zararıdır bu. Kişinin hayattaki ana görevine, daha iyi bir insan olmasına müdahale eder."

— Leo Tolstoy

Bir başkasının kodunu tam olarak anlamadan kendinizi süper zeki hissetmek ve eleştirmek çok kolaydır. Hatta daha da kötüsü, forumda ne kadar yetenekli bir programcı olduğunuzu aşağılayıcı cevaplarla gösterin ki konunun yazarı size kıyasla ne kadar kötü olduğunu anlasın!? İnsanların forumda soru sorduğunu, kodlarını yayınladıklarını ve sorunu nasıl çözmeye çalıştığını ve denediği hangi eylemlerinin işe yaramadığını anlattıklarını çok kez gördüm. Sonrasında aniden deneyimli!? bir noob belirir ve bir çözüm önermeyerek veya sorunun yazarı tarafından sağlanmış olan koddan daha az doğru bir çözüm (kod parçası) önererek, sorunun yazarının çok yanlış olduğuna dair açıklamalar yapar. OMG!


noobun cevabı


Kendinizi hemen konuyu başlatan kişiye atarak ona çok yanlış olduğunu açıklamak ve hatta yanıt olarak ona kendinize göre doğru kodu atmak yerine, neden sorunun nedenlerini açıklayarak başlamıyorsunuz ve ne yapılması gerektiğini ayrıntılı ve net bir şekilde yazmıyorsunuz?

Konu başlatıcı olmanın eğlenceli bir tarafı yok, inanın bana. Elbette forumda konu açan herkes bir şekilde hatalı olduğunu zaten biliyor ve bu yüzden istediği sonucu alamıyor. Konunun yazarının bir noob olma ihtimali yüksektir ve sorunu çözmek için saatler hatta günler harcamış olabilir (tam olarak nasıl hissettirdiğini biliyorum).

Direkt olarak atlayarak, açıklanması olmayan veya net olmayan bir kod parçasını yanıt olarak atarsanız, bunun uzun vadede sorunları çözmeyeceği açıktır. Bu, ameliyat olması gereken birine ağrı kesici vermek gibidir. Bunu yaparak, nooblara, makale dizisinin ilk makalesinde listede ilk olarak anlattığım neredeyse en kötü alışkanlığı öğretmiş olacaksınız - kopyala-yapıştır alışkanlığı. Ve bir noob şu sonuca varabilir: "Forum demek ki bu şekilde çalışıyor, sorunlu kodumu buraya göndereceğim ve karşılığında bana çalışan kodu verecekler. Harika!"

Çözümü her zaman açık, ayrıntılı ve yeni başlayanlara uygun bir şekilde açıkladığınızdan emin olun, çünkü yukarıda da dediğim gibi çoğu yeni başlayanlar olacak. Ayrıca gelecekte aynı problemle karşılaşacak bir çok noob olacağını da unutmayın, bu yüzden muhtemelen bu konudan çözüme ihtiyaç duyacaklar. 

Bu örnek dışında, diğerlerinden daha iyi olduğumuzu düşünmek, forumda yanlış yanıtlara ve kod tabanında yanlış incelemelere neden olur. Sırf kodun sevdiğimiz ve bildiğimiz şekilde veya düşündüğümüz gibi çok karmaşık olmadığını gördüğümüz için, o belirli sistemin yazarından daha iyi olduğumuzu düşünerek, ilk önce kodun nasıl ve neden yazıldığını tam olarak anlamayı reddediyoruz. Bu da cahilliğimizi öne çıkararak haksız olumsuz eleştiriler yapmamıza neden oluyor.

02: Sabit zihniyetten uzaklaşın 


Belirli bir alanda hiçbir zaman iyi olamayacağınızı düşünmeyi bırakın.

"Delilik, her seferinde aynı şeyi yapıp farklı bir sonuç beklemektir."
— Albert Einstein


Aynı türde Uzman Danışmanlar, göstergeler, komut dosyaları veya başka herhangi bir şey yapmaya takılıp kalmayın. Bu, yaratıcılığınızı yok ediyor. Sırf çok karmaşık veya zor olduğu için belirli bir programlama alanında iyi olamayacağınızı düşünmek kendi kendinizi sınırlamaktır. Beyniniz esnek bir sistem olduğunu unutmayın. Yeni uyaranlara uyum sağlar ve değişir. Ne kadar çok meydan okursanız, o belirli konuda o kadar iyi olursunuz. Herhangi bir alanda iyi olabilirsiniz:

ve aklınıza gelebilecek her şey. Ancak bunun gerçekleşmesi için yeterince çalışmanız gerekir.

Evet, elbette, şu ana kadar bir kutsal kase Uzman Danışman (ben görmedim) veya gösterge yok, ancak bu sizi durdurmamalıdır, sistemleriniz üzerinde çalışın, onları iyileştirin, kendinizi geliştirin ve ilerleyin.

MQL5 programlama yolculuğumun ilk günlerinde, kod kütüphanesinden basit hareketli ortalama gibi en basit göstergeyi indirdiğimde çok korktuğumu ve hatta kodun 1000 satırın üzerinde olduğunu hatırlıyorum çünkü kodda ilk baktığım şey buydu. Çok karmaşık olduğunu düşünmüştüm. Sanırım birçok noob bunu yaşıyor.

Şimdi daha fazla deneyimim var ve şunu anlıyorum: evet, bazı şeyler zor olabilir, ancak bu normal. Hayatta her zaman böyledir - başlangıçta zordur, ancak zamanla, harcanan çabayla her şey yerine oturur.

03: Gelecekte kullanmak adına kod yazmayı bırakın


Varsayalım ki uzun zamandır çalıştınız ve Uzman Danışman(lar) veya gösterge(ler) oluşturdunuz. Ve şu anda çok fazla kod satırınız var. Sonrasında ortaya çıkan kodu dikkatlice tekrar okumazsanız, kodun gereksiz ve kullanılmayan kod parçaları içermesi çok muhtemeldir.


"Bilgi sahibi olanlar tahmin etmezler. Tahmin edenlerinse bilgileri yoktur"
— Lao Tzu

Ne kadar az kod, 

  • hatalar o kadar az
  • okumak o kadar kısa 
  • derlemek o kadar kolay 
  • incelemek o kadar hızlı 
  • teslim etme o kadar çabuk
  • bakımı o kadar rahat 
  • hata ayıklaması o kadar eziyetsiz
Şu anda ihtiyacınız olmayan kodu yazarak zaman kaybetmeyin.

Muhtemelen en az bir kez bunun gibi bir kod görmüşsünüzdür:

int MathRandInt(int mini, int maxi)
  {
   double f   = (MathRand() / 32768.0);
   return mini + (int)(f * (maxi - mini));
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void chart_random()
 {
//---
  string background[]={"clrBlack"};
  string bulls[]={"clrGreen","clrDeepPink","clrYellow","clrCrimson","clrMediumBlue","clrKhaki","clrYellow"};
  string bears[]={"clrDarkViolet","clrDarkOrange","clrIndigo","clrWhite","clrSilver","clrMediumPurple","clrBlue"};
//---
   ChartSetInteger(ChartID(), CHART_MODE, CHART_CANDLES);
   ChartSetInteger(ChartID(), CHART_SHOW_GRID, false);
   ChartSetInteger(ChartID(), CHART_AUTOSCROLL, true);
   ChartSetInteger(ChartID(), CHART_SHOW_PERIOD_SEP, true);
   ChartSetInteger(ChartID(), CHART_SHIFT, true);
   ChartSetInteger(ChartID(), CHART_SHOW_ASK_LINE, true);
   ChartSetInteger(ChartID(), CHART_SHOW_BID_LINE, true);
   ChartSetInteger(ChartID(), CHART_COLOR_ASK, clrBlue);
   ChartSetInteger(ChartID(), CHART_COLOR_BID, clrCrimson);
   ChartSetInteger(ChartID(), CHART_SCALE, 2);
   ChartSetInteger(ChartID(), CHART_FOREGROUND, true);
   ChartSetInteger(ChartID(), CHART_COLOR_FOREGROUND,clrWhite);
//---
/*
 for (int i=0; i<ArraySize(background); i++){
     int maxi=ArraySize(background);
     int random_=MathRandInt(0,maxi);
    ChartSetInteger(0,CHART_COLOR_BACKGROUND,StringToColor(background[random_]));
    }
  for (int i=0; i<ArraySize(bulls); i++){
    ChartSetInteger(0,CHART_COLOR_CANDLE_BULL,StringToColor(bulls[MathRandInt(0,ArraySize(bulls))]));
    ChartSetInteger(0,CHART_COLOR_CHART_UP,StringToColor(bulls[MathRandInt(0,ArraySize(bulls))]));
   }
  for (int i=0; i<ArraySize(bears); i++){
    ChartSetInteger(0,CHART_COLOR_CANDLE_BEAR,StringToColor(bears[MathRandInt(0,ArraySize(bears))]));
    ChartSetInteger(0,CHART_COLOR_CHART_DOWN,StringToColor(bears[MathRandInt(0,ArraySize(bears))]));
   } */
//---
   int y_distance=70;
   int font_size=30; 
   int width=(int)ChartGetInteger(ChartID(),CHART_WIDTH_IN_PIXELS);
   int padding=70;
   int x=width/3;
//---
    string label_name= MQLInfoString(MQL_PROGRAM_NAME);
    ObjectCreate(0, "name", OBJ_LABEL, 0, 0, 0);
    ObjectSetString(0,"name",OBJPROP_TEXT,label_name); 
    ObjectSetString(0,"name",OBJPROP_FONT,"Lucida Console"); 
    ObjectSetInteger(0,"name",OBJPROP_CORNER,CORNER_RIGHT_LOWER);
    ObjectSetInteger(0,"name",OBJPROP_XDISTANCE,x+padding); 
    ObjectSetInteger(0,"name",OBJPROP_YDISTANCE,y_distance); 
    ObjectSetInteger(0,"name",OBJPROP_FONTSIZE,font_size); 
    ObjectSetInteger(0,"name", OBJPROP_SELECTABLE, false);
 }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

Ve bu örnek en uzunu değil - bir nedenden dolayı bir programda saklanan 200'den fazla yorum satırı görmüştüm.

MetaEditor, fonksiyon düzeyinde kullanılmayan değişkenleri tanır ve bu tür değişkenlerin varlığı konusunda sizi uyarır. Böylece eğer bu değişkenler sizin için sorun değilse onları tutmaya ve uyarılarını almaya devam edebilir veya onlardan kurtulmayı seçebilirsiniz.

Ancak kodun geri kalanını, istenmeyen kodlara sahip olmadığınızdan emin olmak için kendiniz kontrol etmelisiniz.

Kullanmıyorsanız - demek ki ihtiyacınız yok - o zaman silin.

Kullanılmayan kod sadece kafa karışıklığına neden olur, kodun tamamını uzatır ve programın doğru kısımlarını bulmayı ve ulaşmayı zorlaştırır.

04: Her zaman doğru olmak zorunda değilsiniz

"Hata yapıp da bu hatayı düzeltmeyen, bir hata daha yapmıştır."
— Konfüçyüs

Noobların hemen foruma koşup, neyi, neden bu şekilde kodladıklarına ve ne istediklerine dair net olmayan açıklama sağlayarak kodlarını göndermelerinin ana nedeni, kendilerini daha fazla soruna maruz bırakmaktan çok korkmalarıdır. Bu akıllıca değil, sevgili nooblarım!

Bir programcının hayatı sorunlarla ve sürekli ortaya çıkan zorluklarla doludur. Başarılı olmanın tek yoluysa, yolculuk boyunca karşılaştığınız maksimum sayıda sorunu ve zorluğu çözmektir. Sorunlarınızı forumda asla paylaşmamanız gerektiğini kastetmiyorum (beni yanlış anlamayın). Ancak sorunu kendiniz çözmeye çalışın ve işe yaramazsa bile, foruma gittiğinizde açılayacak bilgileriniz olacak - sorunu ve denediğiniz adımları daha net bir şekilde tanımlayabileceksiniz. Bir soruna odaklandığınızda, onu çözmenin farklı yollarını aradığınızda, yalnızca bu sorunu çözmekle kalmaz, aynı zamanda kendiniz için yeni şeyler keşfedebilir ve daha fazlasını öğrenebilirsiniz.

Hata düzeltildikten sonra, bir dahaki sefere nasıl bu hatayı önleyebileceğinizi anladığınızdan emin olun.


05: Bir gecede başarı fikrinden vazgeçin

"Gerçekten yakından bakarsanız, bir gecedeki başarıların aslında çok uzun zaman aldığını fark edersiniz."
— Steve Jobs

Belki bir süredir programlama yapıyorsunuz, ancak sürekli olarak hiçbir yere hareket etmediğiniz, ilerleme olmadığı hissine kapılıyorsunuz. Doğru mu?

Bu duygu noobların başına çok sık gelir çünkü çoğu, sonuçların hemen olmasını beklemektedir ancak dünya bu şekilde çalışmıyor.

Arkanıza yaslanın, rahatlayın ve sürecin tadını çıkarın. Aslında ilerleme kaydediyorsunuz; şüpheleriniz yolculuğun sadece bir parçası, sizi durdurmamalılar. En sevdiğiniz projeler üzerinde çalışmanızı tavsiye ederim, böylece bir yandan öğrenirken bir yandan da çok eğlenebilirsiniz, ancak bir projede takılı kalmayın. Yeni fikirlere ve olasılıklara her zaman açık olun (ikinci maddede açıkladığım gibi).

Çaba gösterin, sonrasında ilerleme ve gelişme bitmiş bir ürün olarak size gelecektir.

  • Kod kütüphanesinden olabildiğince çok kaynak kodu okuyun ve inceleyin.
  • Makalelerden olabildiğince çok makale okuyun.
  • Forumda başkalarına yardım etmek için daha fazla vakit harcayın.
  • Sizin için en uygun olanı bulmak adına farklı yaklaşımlar deneyin.

Unutmayın

Başarı ara sıra yaptığınız şeylerden gelmez. Sürekli olarak yaptığınız şeylerden gelir.

 

Sonuç

Dürüst olmak gerekirse, MQL5 programlamada veya web geliştirme kariyerimde mükemmel olmaktan çok uzağım. Ben hala bu Kodlama işinde öğrenciyim ve onu öğrenmenin sonu yok çünkü öğretmeyi asla bırakmaz. Her zaman kendimi geliştirmeye ve daha iyi olmaya çalışıyorum. Bunu (yani bir öğrenci olarak öğretmeyi) sizinle paylaşmaya cesaret etmemin nedeni, benimle aynı tutkuya sahip insanların Daha İyi Bir Programcı Olmalarına yardımcı olmaktır.

Gelin başarılı bir MQL5 programcısı olma yolunda birlikte yürüyelim!

MetaQuotes Ltd tarafından İngilizceden çevrilmiştir.
Orijinal makale: https://www.mql5.com/en/articles/9711

Daha İyi Bir Programcı Nasıl Olunur? (3. Bölüm): Başarılı bir MQL5 programcısı olma yolunda şu 5 kötü alışkanlıktan daha vazgeçin Daha İyi Bir Programcı Nasıl Olunur? (3. Bölüm): Başarılı bir MQL5 programcısı olma yolunda şu 5 kötü alışkanlıktan daha vazgeçin
Bu makale, programlama kariyerini geliştirmek isteyen herkesin okuması gereken bir makaledir. Bu makale dizisinin amacı, ne kadar deneyimli olursanız olun, sizi olabileceğiniz en iyi programcı yapmaktır. Makalede açıklanan fikirler hem yeni başlayan hem de profesyonel MQL5 programcıları için işe yarardır.
Daha İyi Bir Programcı Nasıl Olunur? (1. Bölüm): Başarılı bir MQL5 programcısı olmak için bu 5 şeyi yapmayı bırakmalısınız Daha İyi Bir Programcı Nasıl Olunur? (1. Bölüm): Başarılı bir MQL5 programcısı olmak için bu 5 şeyi yapmayı bırakmalısınız
Yeni başlayanların ve hatta ileri düzey programcıların yaptığı, kodlama kariyerlerinde olabileceklerinin en iyisi olmalarını engelleyen birçok kötü alışkanlık vardır. Bu yazıda bunları ele alacağız ve tartışacağız. Bu makale, başarılı bir MQL5 geliştiricisi olmak isteyen herkesin okuması gereken bir makaledir.
Daha İyi Bir Programcı Nasıl Olunur? (4. Bölüm): Programlama hızını artırmak Daha İyi Bir Programcı Nasıl Olunur? (4. Bölüm): Programlama hızını artırmak
Her geliştirici daha hızlı şekilde kod yazabilmek ister. Daha hızlı ve verimli bir şekilde kod yazabilmek, yalnızca birkaç kişinin sahip olduğu doğuştan gelen bir tür özel yetenek değildir. Bu, klavyedeki geçmiş deneyime bakılmaksızın her kodlayıcının ustalaşabileceği bir beceridir.
Piyasadan Ürün Satın Alma İpuçları. Adım Adım Rehber Piyasadan Ürün Satın Alma İpuçları. Adım Adım Rehber
Bu adım adım kılavuz, gerekli bir ürünü daha iyi anlamak ve aramak için ipuçları ve püf noktaları sağlar. Makale, uygun bir ürünü aramanın, istenmeyen ürünleri ayırmanın, ürün verimliliğini ve sizin için gerekliliğini belirlemenin farklı yöntemlerini çözmeye çalışıyor.