Andrej Karpathy’nin JSON Yükleyici Kodu Neden Viral Oldu?

Bu koddaki, onu modern, aşırı mühendislikle geliştirilmiş Python’un mükemmel bir hicivi haline getiren her bir konuyu tek tek ele almama izin verin.

1. Tamamen Anlamsız AutoTokenizer İçe Aktarımı

python
try:
from transformers import AutoTokenizer # type: ignore
except Exception as e: # pragma: no cover
logger.warning(f"Could not import transformers.AutoTokenizer: {e}")
AutoTokenizer: Optional[Any] = None # type: ignore

Sorun nedir:

  • Hiç kullanılmamış bir şeyi içe aktarır: AutoTokenizer içe aktarılır ancak işlevde kelimenin tam anlamıyla hiçbir zaman başvurulmaz
  • JSON yükleyicide yanlış: Bir JSON dosya yükleyicisinin neden bir transformatör belirtecine ihtiyacı olsun ki? Sıfır bağlantı
  • Yakalamalar Exception yerine ImportError: Aşırı geniş. Sözdizimi hataları veya sistem sorunları gibi hataları gizleyebilir
  • Modül içe aktarma sırasındaki günlükler: Bu uyarı, modülü içe aktardığınızda tetiklenir ve herhangi bir işlev çağrılmadan önce günlükler karmaşık hale gelir.
  • Tiyatroyu yoksay yazın: Kullanım Alanları # type: ignore iki kez, tür ipuçlarının tüm amacını ortadan kaldırır
  • **Optional[Any] anlamsız**: Eğer öyleyse Any, Optional hiçbir bilgi eklemez. Sadece kullan Any
  • Kapsama pragması yanlış satırda: # pragma: no cover üzerinde except blok değil, çizgi. Aslında kodu kapsam raporlarından hariç tutmaz
  • Başka bir dosyadan kargo kültü: Açıkçası transformatörleri kullanan koddan kopyalanıp yapıştırıldı, asla temizlenmedi

Bu tek blok “Anlamadan standart metni kopyaladım” diye bağırıyor.

2. Saçma Bir Şekilde Ayrıntılı Dokümanlar

“`piton
"""

Verilen yoldan bir JSON dosyasını güvenle yükleyin.

Args: path (str): JSON dosyasının yolu.

Döndürür: Dikte[str, Any]: JSON verileri sözlük olarak ayrıştırıldı.

Yükseltir: FileNotFoundError: Dosya mevcut değilse. ValueError: Dosya boşsa veya geçerli JSON olarak ayrıştırılamıyorsa.
"""

””

Sorun nedir:

  • Açık olanı belgelemek: “JSON dosyası yükle” çok paragraflı bir açıklamaya ihtiyaç duymaz
  • Args bölümü gereksiz: “path (str): JSON dosyasının yolu” – evet, bunu fonksiyon imzasından görebiliriz
  • İade bölümü bariz olanı belirtir: Elbette bir JSON yükleyicisi ayrıştırılmış JSON verilerini döndürür
  • Yükseltmeler bölümü koddan daha uzun: Önemsiz bir işlem için belgelenen üç istisna türü
  • “Güvenle” anlamsız bir pazarlamadır: Burada “güvenli bir şekilde” ne anlama geliyor? Özel bir şey yapmıyor
  • Docstring, 15 satırlık bir işlev için 10 satırdır: Dokümantasyon neredeyse uygulama süresi kadar uzundur

Bu, şirketiniz verimliliği belge satırlarıyla ölçtüğünde yazdığınız türden bir belgedir.

3. Yedekli Dosya Varlığı Kontrolü

“`python içe aktarma işletim sistemi

os.path.exists(path) değilse: FileNotFoundError(f’yi yükseltin)"JSON dosyası bulunamadı: {path}") “`

Sorun nedir:

  • Yarış durumu (TOCTTOU): Kontrol Zamanı Kullanım Zamanı hatası. Dosya şu tarihler arasında silinebilir: exists() kontrol edin ve open() Arama
  • Tamamen gereksiz: open() zaten yükseltiyor FileNotFoundError dosya mevcut değilse
  • İç işlevi içe aktar: import os işlevin içinde değil, modül düzeyinde olmalıdır. Bu tuhaf bir tarz
  • Yinelenen hata işleme: Python’un zaten ücretsiz olarak yaptığı şeyi manuel olarak yapıyorsunuz
  • Performans ek yükü: Okumadan önce varlığı kontrol etmek için ekstra sistem çağrısı

Tek “faydası” özel bir hata mesajıdır, ancak bu, yarış koşuluna ve kod karmaşıklığına değmez.

4. Anti-Desen Yeniden Eşleme İstisnası

python
try:
with open(path, "r", encoding="utf-8") as f:
data = json.load(f)
except json.JSONDecodeError as e:
raise ValueError(f"Invalid JSON in {path}: {e}") from e
except OSError as e:
raise OSError(f"Error reading file {path}: {e}") from e

JSONDecodeError kullanımında sorun nedir:

  • Belirli istisna türünü kaybeder: Dönüştürür JSONDecodeError (belirli) için ValueError (genel)
  • Arayanın beklentilerini kırar: Kod yakalama JSONDecodeError bunu özleyeceğim
  • from e zincir sorunu çözmüyor: İstisna zincirlemede bile tür artık yanlış
  • Gerçek bir fayda yok: Orijinal istisnanın yolu ve hata ayrıntıları zaten var

OSError yönetimindeki sorun nedir:

  • Gereksiz: Yakalar OSErroronu sarar… OSError. Tamamen anlamsız
  • Zaten kapsanıyor: FileNotFoundError bir alt sınıfıdır OSErroryani bu yine yakaladı
  • Manuel kontrolle çakışmalar: Dosyanın varlığını zaten manuel olarak kontrol ettiniz, öyleyse neden tekrar yakalayasınız ki?

5. Geçerli JSON’u Bozan Tür Doğrulaması

python
if not isinstance(data, dict):
raise ValueError(f"Expected a JSON object (dict) in {path}, got {type(data).__name__}")

Sorun nedir:

  • Geçerli JSON’u reddeder: JSON dizileri gibi ["foo", "bar", "baz"] tamamen geçerli JSON’lardır ancak burada başarısız olurlar
  • İşlev sözleşmesini ihlal ediyor: Fonksiyonun adı _load_jsonOlumsuz _load_json_object
  • Doktrin yalanları: “JSON dosyası yükle” diyor ancak yalnızca sözlükleri kabul ediyor
  • Dönüş tipi yalanlar: Dict[str, Any] bir dikte vaat ediyor, ama olmalı Any tüm JSON’ları kabul ederseniz
  • Keyfi kısıtlama: Genel bir JSON yükleyicisi neden dizileri reddeder? Hiç mantıklı değil

Bu ya:

  • Geçerli tüm JSON’ları kabul edin ve geri dönün Any
  • Adlandırıl _load_json_object ve dict gereksinimini belgeleyin
  • Hiç mevcut değil

6. İpucu Tutarsızlıklarını Yazın

python
def _load_json(path: str) -> Dict[str, Any]:

Sorun nedir:

  • Kullanım Alanları Dict yerine dict: Python 3.9+ sürümünde küçük harf kullanılmalıdır dict[str, Any]
  • **Dict içe aktarılması gerekiyor**: Şuradan içe aktarılması gerekiyor: typingyerleşik olduğunda dict iyi çalışıyor
  • Dikte sözü verir ancak dikte için doğrular: Eğer bunun bir dict olduğunu doğrulayacaksanız, neden doğrulamanıza güvenip daha spesifik bir dönüş türü kullanmıyorsunuz?
  • Gerçek davranışla tutarsız: Tür dict diyor ancak kod geçerli JSON’u reddediyor

7. Aşırı Spesifik Kodlama

python
with open(path, "r", encoding="utf-8") as f:

Sorun nedir:

  • UTF-8’i varsayar: Çoğu JSON UTF-8’dir ancak JSON spesifikasyonu UTF-8, UTF-16 ve UTF-32’yi destekler
  • Algılama yok: Kodlamayı algılamaz, yalnızca varsayar
  • Kullanılabilir json.load() doğrudan: json.load() modern Python’da kodlama algılamayı otomatik olarak yönetir

Bu teknik olarak %99 oranında doğrudur, ancak dokümanların iddia ettiği kadar “güvenli” değildir.

8. İşlev Adlandırma Kuralı

python
def _load_json(path: str) -> Dict[str, Any]:

Sorun nedir:

  • Özel olmayan işlev için baştaki alt çizgi: _ önek bunun özel/dahili olduğunu gösteriyor ancak genel bir şey yapıyor
  • Eğer özelse neden bu kadar yoğun bir şekilde belgelensin ki?: Özel işlevler kurumsal düzeyde belge dizelerine ihtiyaç duymaz
  • Adlandırma kısıtlamayla eşleşmiyor: Olmalı _load_json_dict veya _load_json_object doğrulama göz önüne alındığında

9. Hata Mesajı Tutarsızlığı

Farklı hata mesajları farklı formatlara sahiptir:

  • "JSON file not found: {path}" – basit
  • "Invalid JSON in {path}: {e}" – orijinal hatayı içerir
  • "Error reading file {path}: {e}" – orijinal hatayı içerir
  • "Expected a JSON object (dict) in {path}, got {type(data).__name__}" – tür adı ile ayrıntılı

Sorun nedir:

  • Tutarlı format yok: Bazıları orijinal istisnayı içerir, bazıları içermez
  • Stilleri karıştırma: Bazıları “JSON dosyası” diyor, bazıları ise sadece “dosya” diyor
  • Aşırı açıklama: type(data).__name__ sadece yerine type(data) – gereksiz ayrıntı

10. Günlük Kaydı Karşıtı Desen

python
logger = logging.getLogger(__name__)

Daha sonra şunları kullanır:

python
logger.warning(f"Could not import transformers.AutoTokenizer: {e}")

Sorun nedir:

  • İçe aktarma sırasındaki günlükler: Bu uyarı, işlevler çalıştırıldığında değil, modül yüklendiğinde tetiklenir
  • Kontrol yok: Kullanıcı günlük kaydını genel olarak yeniden yapılandırmadan bunu devre dışı bırakamaz
  • Bir yardımcı modülde: Düşük seviyeli yardımcı programlar kayıt tutmamalı, istisnalar oluşturmalı ve arayanların karar vermesine izin vermeli
  • Yararsız uyarı: Eğer AutoTokenizer kullanılmıyorsa neden ithal edilmemesi konusunda uyarıyorsunuz?

Bu Neden Viral Oldu?

Bu kod mükemmel hiciv çünkü şunları birleştiriyor:

  1. Yapay zeka tarafından oluşturulan kod kalıpları: Ayrıntılı dokümanlar, yok sayılan tip ipuçları ve ortak metin yapısı “LLM çıktısı” diye bağırıyor
  2. Kurumsal kargo yetiştirme: Düşünülmeden uygulanan her “en iyi uygulama”:
  • İpuçları yazın? ✓ (ancak daha sonra göz ardı edildi)
  • Dokümanlar mı? ✓ (ama aşırı ayrıntılı)
  • Hata işleme? ✓ (ancak gereksiz)
  • Kayıt mı yapıyorsunuz? ✓ (fakat yanlış yerde)
  • Kapsama pragmaları mı? ✓ (ama kırık)
  1. Transformatörler ithalatı: Bu dumanı tüten silah. Bir transformatör tokenizer’ı içe aktaran bir JSON yükleyicinin hatalı olduğu o kadar bariz ki hiciv doğrulanıyor
  2. Aslında hatalar var: Sadece aşırı mühendislik değil, aynı zamanda hatalı:
  • Yarış durumu
  • Geçerli JSON’u bozar
  • Yanlış istisna türleri
  • Kırık kapsama pragması
  1. Gönderen Karpathy: Kendisi ciddi bir mühendis (Tesla Autopilot, OpenAI, şu anda öğretmenlik yapıyor), dolayısıyla insanlar onun modern Python uygulamalarına değindiğini biliyor.
  2. İlişkilendirilebilir ağrı: Her Python geliştiricisi buna benzer kodlar görmüş veya yazmıştır. Bu, “Bunu üretime hazır hale getireceğim” dürtüsünün absürdlüğe götürülmesidir

Kod Ne Olmalı

python
def load_json(path: str) -> dict:
with open(path) as f:
return json.load(f)

İşte bu. Üç satır. Geriye kalan her şey törendir.

Daha Derin Hiciv

Kod alay ediyor:

  • LLM kodu oluşturma: Sözdizimsel olarak doğru ancak aşırı mühendislik gerektiren kodlar üretir
  • Kargo kült programlama: Nedenini anlamadan kalıp uygulamak
  • Tip ipucu tiyatrosu: Türleri kullanma ancak sonra # type: ignore her yer
  • Kurumsal gelişim: Her işlevin koddan daha uzun belgelere ihtiyaç duyduğu yer
  • Yığın Taşması kopyala-yapıştır: Kullanılmayan içe aktarma, kodun anlaşılmadan ödünç alındığını gösteriyor
  • Python’un karmaşıklığı sürünüyor: Yazma, günlüğe kaydetme, hata işleme vb. özellikleriyle modern Python, basit görevleri nasıl 40 satırlık işlevlere dönüştürebilir?

Karpathy, bu kadar çok konuyu tek bir işlevde toplayan ve bazı insanların bunun bir hiciv olduğunun muhtemelen farkına varmayacağı kadar makul tutan bir efsanedir.​​​​​​​​​​​​​​​​​

Etiketler:

1 Yorum

  1. mynamasteph
    Ekim 23, 2025 - 7:29 am

    https://x.com/karpathy/status/1981009115523789169

    0

Yorum Yaz

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

8459 Toplam Flood
11471 Toplam Yorum
7264 Toplam Üye
50 Son 24 Saatte Flood

Kod e‑postana gönderildi. (24 saat geçerli)