deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

WebForms.php 2.1, C#'tan DeepSeek tarafından taşındı, yayından önce Qwen tarafından denetlendi

WebForms Core'un PHP arka ucu olan WebForms.php 2.1, C# referans kodundan DeepSeek ile makine dönüşümüyle üretildi ve ardından Qwen tarafından bağımsız olarak kontrol edildi; bu süreç gerçek anlam farklarını yakaladı.

WebForms.php 2.1, C#'tan DeepSeek tarafından taşındı, yayından önce Qwen tarafından denetlendi

WebForms.php 2.1, WebForms Core 2.1'in PHP arka uç uygulaması olarak yayımlandı ve asıl ilginç olan, inşa edilme biçimi. Elanat Framework projesinin 5 Eylül 2026 tarihli dev.to yazısına göre PHP kodu, C# referans uygulamasından DeepSeek kullanılarak dönüştürüldü, elle gözden geçirildi, ardından ikinci bir model olan Qwen tarafından bağımsız olarak değerlendirildi ve yayından önce düzeltmeler ile testler yapıldı.

WebForms.php gerçekte ne

WebForms Core, projenin Commander–Executor dediği modele dayanan, sunucu güdümlü bir web teknolojisidir: sunucu, UI işlemlerini ve yürütme akışını tanımlayan komutlar üretir; tarayıcıda çalışan WebFormsJS ise bunları yorumlayıp yürütür. Sunucu tarafındaki WebForms sınıfı DOM'a asla doğrudan dokunmaz; komut yapısını üretir. Sınıf çoğunlukla komut dizgileri ürettiği için çekirdek mantığının her dil için yeniden tasarlanması gerekmez; birkaç dil için uygulama bulunmasının ve C# sürümünün birincil referans olmasının nedeni budur. Bu referans geniş bir alanı kapsar: DOM manipülasyonu, olay yönetimi, Fetch işlemleri, koşullar, döngüler, durum yönetimi, depolama, tarayıcı geçmişi, WebSocket'ler, SSE, şablonlar, seçiciler ve Action Controls.

Tek adımlık bir çeviri değil, bir süreç hattı

dev.to yazısı, işin tek geçişlik bir C#'tan PHP'ye dönüşüm olmadığını açıkça belirtiyor. Zincir şöyle işledi: DeepSeek dönüşümü, elle inceleme, Qwen değerlendirmesi, düzeltmeler, test, yayım. DeepSeek'e, C# uygulaması ve ilgili yardımcı sınıflar bilinçli olarak katı talimatlarla verildi: önce yapıyı çözümle ve dönüşüm yaklaşımını açıkla, C# davranışını koru ama yalnızca C# yapısını yansıtan kod üretmek yerine PHP kurallarına uy. Metot adları camelCase olacaktı; böylece SetWidth, setWidth'a dönüştü. Parametreler PHP tarzını izleyecekti ($InputPlace yerine $inputPlace). C#'ın PHP'de bulunmayan bir dil özelliğine güvendiği yerlerde dönüşüm, sözdizimini taklit etmek yerine uygun bir PHP karşılığı kullanmak zorundaydı.

PHP'de aşırı yükleme sorunu

Metot aşırı yükleme (overloading), PHP'nin C# gibi imza temelli aşırı yüklemeyi desteklememesi nedeniyle temsilî bir sorun olarak öne çıkarılıyor. Yaklaşım PHP'nin kendi özelliklerine dayandı: string|int gibi union tipler (metot hangi davranışın geçerli olduğuna içeride karar veriyor) ve isteğe bağlı bağımsız değişkenler için ?int $second = null gibi varsayılanlı nullable parametreler. Örneğin dönüştürülen setWidth, tamsayı bir genişlik aldığında 'px' ekliyor. Belirtilen hedef, aşırı yüklenmiş C# metotlarının gözlemlenebilir davranışını eşlemek ve kompakt bir genel API korumaktı; imzalarını birebir çoğaltmak değil.

İnsan incelemesi neden yine de yapıldı

Dönüşüm sonrası ilk inceleme elle yapıldı; çünkü sorunsuz çözümlenen PHP, aynı davranan PHP anlamına gelmiyor. Yazı olağan şüphelileri sayıyor: tip dönüşümleri, null işleme, metot aşırı yükleme, dizgi dönüşümü, diziler, isteğe bağlı parametreler, adlandırma kuralları ve nesne işleme. Buradaki risk tipik bir kütüphaneden daha yüksek; çünkü komut dizgileri, sunucu tarafındaki WebForms sınıfı ile tarayıcı tarafındaki WebFormsJS arasındaki sözleşme niteliğinde — üretilen çıktıdaki küçük bir fark, işlevsel bir farka dönüşüyor.

Qwen'un değerlendirmesi ne yakaladı

Qwen'dan yeniden yazmak yerine değerlendirmesi istendi; PHP sonucu ile özgün C# davranışı arasındaki uyumsuzlukları arıyordu. Yazı en önemli iki bulguyu öne çıkarıyor.

İlki implode() ile ilgiliydi. C# kodu karışık tipteki bağımsız değişkenleri string.Join ile birleştiriyordu ve C#, birleştirirken değerleri dizgi temsillerine dönüştürüyor. İlk PHP portu, karışık dizide doğrudan implode() çağırdı; bu, rastgele değerler için eşdeğer değil — PHP'nin dizgi olmayan bağımsız değişkenleri işleme biçimi, özellikle yeni sürümlerde farklı. Düzeltme, dönüşümü açık hale getiriyor: birleştirmeden önce her öğeyi strval üzerinden geçiriyor.

İkincisi, dahili add() metodunda null ile boş dizgi farkıydı. C#'ın StringBuilder.Append()'ine null geçirmek hiçbir şey katmıyor — fiilen boş bir dizgi — 'null' metnini değil. PHP sürümü başlangıçta null'ı farklı işlediğinden deleteState(?string $path = null) gibi metotlar C# çıktısından sapan komutlar üretebiliyordu. Düzeltme, $path ?? '' geçirerek açıkça normalleştiriyor. Yazı, her iki sürümün de geçerli PHP olduğunu vurguluyor ve hatayı sözdizimi değil, diller-arası anlam sorunu olarak çerçeveliyor; burada da yayımlanan metin cümlenin ortasında kesiliyor.

Neden önemli

Bu yayım, çok modelli geliştirme iş akışlarının küçük ama somut bir örnek olayı: bir model taşımayı yapıyor, bir insan gözden geçiriyor ve rakip bir model sonucu davranışsal sapma açısından denetliyor. Özellikle Qwen bulguları, her API çağrısını en benzer görünen karşılığıyla değiştirmenin aynı anlamı garanti etmediğini ve sorunsuz çalışan kodun yine de bir protokolü bozabileceğini gösteriyor. WebForms Core için dilden bağımsız komut tasarımı, yapay zekâ destekli bir portu ilk place mümkün kılan şeydi ve aynı desen — üretici model, insan kapısı, değerlendirici model — başka yerlerde de tekrarlanacak gibi görünüyor. Bir uyarı: bu anlatım projenin kendi dev.to duyurusuna dayanıyor ve henüz bağımsız bir haber yok; dolayısıyla süreç hattı ve bulgular, projenin anlattığı şekliyle.

  • #php
  • #c-sharp
  • #deepseek
  • #qwen
  • #ai-code-generation

İlgili yazılar