Özetle:
- Geliştiricilerin hata üzerinde gerçekleştirdikleri çözüm bulma yolculuğunda Neo bir zaman makinesi sunduğunu duyurdu.
Neo'nun Geliştirme Müdürü John deVadoss blokzincire ilişkin geliştiricilere sundukları yenilikleri ve iş yürütme süreçlerini kaleme aldığı bir yazı paylaştı. deVadoss, bilgisayar düzleminde bir çeşit zamanda yolculuğun mümkün kılındığı Zaman Yolculuğu Hata Ayıklayıcısı’nı şu yazısıyla paylaştı:
“Merkezi olmayan blokzincir defterine güç veren kriptografik durum; makine altyapısı, bilgi işlem tarihinde benzersiz bir yenilik dalgasına yol açtı. Ancak bu aynı zamanda geleneksel yazılım geliştirme ve özellikle hata ayıklama araç ve tekniklerinin sınırlarına da meydan okudu.
Kusursuz hatalar
Makineler kusursuz biçimde kesin hatalar yapabilir; her şeyden önce kod insanlar tarafından yazılmıştır ve hatalar insan varoluşunun bir gerçeğidir. Bununla birlikte, bir blokzincir üzerindeki hatalar, dağıtık defterin doğası nedeniyle muazzam etkilere sahip.
Yazılım geliştirme yaklaşımları da blokzincir paralelinde ilerleyebilir. Bir zincirdeki yazılım hatalarının bağlamı analiz edildiğinde, gerçekte iki ilgili sorunun olduğu göze çarpıyor: birincisi, hatayı tanımlamak, ikincisi ise sonlu durum makinesinin bu duruma tam olarak nasıl girdiğini anlamak.
Geleneksel olarak sistem günlükleri bu konuda asıl sorunun kimliğini verme konusunda etkili olma eğilimindedir. Ancak, günlükler sorunun en iyi ihtimalle yarısını ele alır. Günlükler geliştirici için ekmek kırıntılarını bırakarak problemin etkisini simüle eder. Optimist bakış açısı, kodun Mainnet'te kodun yürütülmekte olduğu çeşitli senaryoları tahmin etmek ve bunun için geliştiriciye bir pusula vermek açısından yeterlidir.
Gerçek sorunun kimliği hakkındaki bilgilere dayanarak geliştirici kesim noktalarını ayarlamak, imlece koşmak, yöntemlere adım atmak ve yöntemlerden çıkmak için sıkı bir iç döngü oluşturur. Bu yazılım arkeolojisi döngüsünde saatler ve günler geçirilir; ancak Testnet veya Mainnet'te nispeten karmaşık yeni bir sorun ortaya çıkar çıkmaz, sil baştan geri dönmeye zorlanılır.
Daha da kötüsü, genellikle gözlemlenebilir etkilerin zamanın ve / veya uzayın hatanın konumundan ayrıldığı sinsi hatalardan birkaçı söz konusudur. Bu noktada, geleneksel yaklaşımlar hemen hemen geliştiricilerin temelde feragat etmeleri ve klasik tepki vermeleri ile sonuçlanır.
Yeni Bir Yaklaşım
Ya zincirin durumunun nasıl değiştiğini ve zincir üzerinde belirli eylemlerin ne zaman ve neden yürütüldüğünü adım adım incelemek için olayları doğru ve tekrarlanabilir bir şekilde kaydedip yeniden incelenebilseydi?
Zamanda Yolculukta Hata Ayıklama (Time Travel Debugging), geliştiricilerin kod yürütme işleminde kolayca ileri ve geri adım atmalarını sağlayarak hata ayıklamayı büyük ölçüde basitleştirir. Time Travel Debugging, geliştiriciye hatayı yeniden oluşturmayı denemek yerine (genellikle başarısız olur) hata ayıklamalarını “geriye sarmasına” olanak vererek yardımcı olur. Ayrıca, zaman içinde geri dönerek ve bağlamı daha iyi anlayarak geliştirici, hataya yol açan her adımı incelerken ve nasıl düzeltileceğini en iyi şekilde nasıl çözeceğini anlarken, senaryoyu istedikleri kadar "tekrarlayabilir".
Zaman yolculuğunda hata ayıklama
Time-Travel Debugging, geliştiricinin çalışan kodun yürütülmesini blokzincir üzerine kaydetmesini sağlayarak geliştiricinin düzenleme, derleme, oluşturma ve hata ayıklama döngüsünü hızlandırır ve daha sonra geçmişe veya geleceğe bakmaksızın yeniden çalıştırır; izleme dosyalarında kod yürütülmesini yakalayarak mümkün olduğunca az ek yük ekleyerek bunu verimli bir şekilde yapar.
Neden önemli?
Tarihsel olarak uzaktan ölçüm ve sistem günlükleri, koddaki sorunun kimliğini tespit etmek için hafif, senaryo güdümlü bir yaklaşım sağlamak için kullanılmıştır. Ancak, 'bilinmeyen-bilinmeyen' senaryolar bu yaklaşımın Zayıf Noktası; uzaktan ölçüm olmadan beklenmedik kod yollarında sorunlar ortaya çıkıyor.
Dökümler, hata ayıklamaya yönelik bir başka düşük teknoloji yaklaşımıdır; herhangi bir açık kodlamaya gerek yoktur ve basit bir zaman serisi görünümü yanılsaması oluşturmak için ardışık dökümler veya anlık görüntüler kullanılır.
İleriye dönük hata ayıklama
Canlı hata ayıklama, yalnızca ileriye yönelik hata ayıklamanın geleneksel uygulamasıdır; kesme noktaları, izleme noktaları ve diğer genel çalışma zamanı hata ayıklayıcı özelliklerinin bir birleşimi, geliştiricinin hataları bulmasına yardımcı olan işaretçiler olarak işlev görür. Geliştirici, bir kesme noktasına ulaşana kadar kodu çalıştırır ve kodun belirli bölümünde görünen sorunları analiz eder. Bazı durumlarda, bu mükemmel çalışır, ancak genellikle, geliştirici kodun hangi ilgili bölümünün hataya neden olduğunu bilmez: kod bir blokzincir üzerinde çalışırken büyük bir sorun.
Geleneksel hata ayıklayıcılar geliştiricinin satır satır ilerlemesini ve bir hata arayışında olmasını sağlar. Bununla birlikte, geliştiricinin hataya yol açan koşullar hakkında çok az bilgisi olduğu veya hiç bilgisi olmadığı için, bu yaklaşımı hataların çoğaltılması zor olduğunda uygulamak çok daha sorunludur.
Bu sorunu ve çoğu zaman büyük zarar veren şeyleri, gözlemlenebilir etkilerin zamanın ve / veya uzayın hatanın bulunduğu yerden ayrıldığı nokta, daha önce bahsedilen sapkın böceklerdir. Bunun klasik bir örneği, durum okuma yöntemlerinin (aslında hatasız olabileceği), daha önce çağrılmış olan bir işlev veya işlevlerden (hatanın bulunduğu yerde) kaynaklanan bozuk duruma erişmesidir.
Zamanda Yolculukta Hata Ayıklayıcıları
Zamanda Yolculukta Hata Ayıklayıcıları, programın yürütülmesi geriye doğru işletilebildiği için programın bir yerine iki ucu olması çözüme ulaşmak için önemlidir.
Time-Travel Debugging, geliştiricilerin karmaşık hataları düzeltmelerine yardımcı olan güçlü bir dizi teknik ve araç sağlar. Ayrıca, bir geliştiricinin neden belirli bir hatanın meydana geldiğini anlayamadığı senaryolarda, senaryonun bir kısmını başkalarıyla paylaşabilir. Bu, işbirliğini ve ekip geliştirmeyi önemli ölçüde kolaylaştırır.
Neo ve zaman yolculuğu
Neo, geliştiricileri ve dünya çapındaki topluluklarına Zaman Yolculuğu Hata Ayıklaması sunuyor. Neo blokzincir geliştiricilerinin ilk kez karmaşık kodları anlamak, analiz etmek ve düzeltmek için kaynak kod düzeyinde çalışarak ileri ve geri gidebilecekleri bir dünya vaat ediyor.
Neo ekibi, Neo'ya ve blokzincir dünyasına milyonlarca geliştirici getirme ve Akıllı Ekonomi vizyonunu gerçekleştirme misyonuyla devam ediyor."
Neo nedir?
Neo, geleceğin optimize edilmiş dijital dünyasını gerçekleştirmek için blokzincir teknolojisinin kendine özgü avantajlarından yararlanan açık kaynaklı, topluluk odaklı bir platformdur.
Kaynak: https://cryptoslate.com/the-time-travelling-blockchain-developer/