Zengin kod biçimlendirme neden daha yaygın değil?


29

Code Complete'i okuyordum ve mizanpaj ve stil bölümünde, kod editörlerinin bir çeşit zengin metin biçimlendirmesi kullanacağını tahmin ediyordu. Bunun gibi görünen kod yerine

Procedure ResolveCollisions
{ Performs a posteriori collision resolution through spatial partitioning algoritm }
(
  CurrentMap : SpriteContext,
  PotentialColliders: SpriteList
)
var Collider  : Sprite, 
    Collidee  : Sprite, 
    Collision : SpriteCollision
begin
  DoStuff();
end.

şuna benzer bir şey olabilir:

prosedür ResolveCollisions

Mekansal bölümleme algoritması ile bir posteriori çarpışma çözünürlüğü gerçekleştirir

Parametreler

  • CurrentMap : SpriteContext
  • PotentialColliders : SpriteList

Yerel Değişkenler

  • Collider : Sprite
  • Collidee : Sprite
  • Collision : SpriteCollision
    DoStuff();

Sözdizimi renklendirme ve vurgulama ve hatta parantez renklendirme gördüm, ancak gerçek kodda böyle görünen hiçbir şey yoktu. Bu tür bir şeyin gerçekten var olup olmadığını veya belki de bunun yeterli faydası olmadığına ya da tamamen kötü bir fikir olduğuna karar verilip verilmediğini merak ediyordum.

Herhangi biriniz daha önce böyle biçimlendirilmiş bir kod gördünüz mü veya fikrin hiç dikkate alınmadığını ve nihayetinde reddedildiğini biliyor musunuz?


8
Knuth'un cweb'ini gördün mü? www-cs-staff.stanford.edu/~uno/cweb.html
greyfade



12
Peki şimdi Word'ü IDE editörünüz olarak mı istiyorsunuz?

5
Kurtulmak imkansız olan tuhaf biçimlendirmeler söz konusu olduğunda asla Word ile mücadele etmediniz. Örneğin, editörün gerçek kaynak kodun bazı bölümlerini gizlediğini varsayalım. Bir izleyici olarak, bence güzel olurdu, bir editör olarak, lütfen .. benim fakir ruhum için merhamet et!
Newtopian

Yanıtlar:


38

Yapamaman için teknik bir sebep yok. Metin editörleri sözdizimi vurgulama yapabilirlerse, ekranın diğer yönlerini de kodu vurgulamak için kolayca değiştirebilirler.

Ancak, ne yazıyorsa yazsın, editörün yazdığınızı anlamasıyla renkleri değiştiriniz. Metnin aniden boyutları değiştirmesi ve siz yazarken etrafa atlaması gerçekten iğrenç olur.

Ancak, 'statik' bir kod görüntüsü için kaynak kodunu kolayca güzelleştirebilirsiniz. Örneğin, yarısı kadar iyi bir source-> html dönüştürücüsünü alın ve stil sayfalarına istediğiniz font boyutunu ve stilini ekleyin. Zengin biçimlendirilmiş kodunuz olacaktır.


14

Basit sebep: editör / araç bağımsızlığı.

Size "zengin" kodunu verdiğinizde - kullandığınız düzenleyiciye veya zengin kodu anlayabilenlere bağlanacaktır. Zenginliği idare edemeyen diğer tüm editörler anlamsızlık gösterecektir.

Aynı şekilde, zengin kod farklı araçlarla iyi oynamazdı. Örneğin, yalnızca biraz biçimlendirme değiştirdiyseniz, fark bir fark gösterecektir, ancak en azından ilgilendiğiniz bir fark bile değildir.

Peki ya sürüm kontrolü? Biçimlendirme alanındaki tüm değişiklikleri yoksaymasını ve dosyaları yalnızca "gerçek" bir değişiklik olduğunda değiştirilmiş olarak görmesini nasıl söylersiniz?

Son olarak, zengin kodun tüm noktası okunabilirlik olduğunu tahmin ediyorum - ve bunun için daha iyi (ve daha fazlası) yorumlar, mantıksal tanımlayıcı adlar ve tutarlı girinti yeterli olacağını düşünüyorum.

Temel olarak, programlama metni en iyi düz bir metin olarak ele alınır - gördüğünüz şey gerçektir. ( Pythonic açık fikir fikriyle örtüşenden daha iyi durumdadır )


28
Bu mutlaka doğru değil. Editörler sözdizimi vurgulamasını yapabiliyorsa, o emin sözdizimi "kalınlaştırmak" veya sözdizimi yapabilirsiniz vb "font boyutlandırma"
whatsisname

4
Emacs bunu yapmak için yapılandırılabilir, ancak IMO yazı tipi boyutunu değiştirmek ekran alanını boşa harcar.
kevin cline

4
Eğer yazar formatlamayı manuel olarak yapmak zorunda olsaydı, zaman kaybı olurdu. Açıkçası, metin editörü otomatik olarak yapardı, ya da belki bir tür stil sayfası kullanabilirsiniz.
Peter Olson,

7
@greegit: Editörler kaynak dosyalarında onlarla iş yaptıklarında renk bilgisi bırakmazlar, başka biçimlendirme işaretleri bırakmak zorunda kalmazlar, talep üzerine yeniden üretebilirler. Sözdizimi vurgulama ve sözdizimi biçimlendirme arasında temel bir fark yoktur. Araçlar otomatik olarak sahte sınıf şemaları ve UML şemalarını otomatik olarak kaynak koddan yapabilirse, zaman zaman işleri cesurlaştırabilir.
whatsisname,

9
Bu cevabın kesinlikle yanlış olduğu için bir sürü olumlu yönü var.
Ürdün

11

Belki de zengin biçimde biçimlendirilmiş kod yakalanmamıştır çünkü çok hoş bir fikir değildir. Şahsen, verdiğiniz örnekte gördüklerimi beğenmedim. Sözdizimi renklendirme ve vurgulamayı kullanırım, ancak bu biçimlendirme çok işlenmiş ve kod görmeye ve yazmaya alışkın olduğumdan çok farklı.


11

Neden yok Bunun için talep / ihtiyaç yok.

Mevcut editörler, programcıların sözdizimi vurgulaması ve diğer bazı küçük stilistik seçenekleri ile ihtiyaçlarını karşılayabilir. Bu zaten "zengin metin" değil mi?


7
+1 Talep yok için. Böyle kodlamaktan nefret ediyorum. Görünüşe göre TPS raporunu Word'de yazıyor, kod yazmıyor.

1
@Glenn Nelson: Katılıyorum. Olabiliyorsa normal belgeler yazmak için bile Word'den kaçınırım (bunun yerine LaTeX kullanıyorum). Vurgulama sözdizimi seviyorum ama zengin kod biçimlendirme gerçekten bana müdahaleci hissediyorum.
Giorgio

5

Bu, Emacs için AucTeX modunda LaTeX için zaten var. Bölüm başlıkları boyut olarak daha büyüktür, alt ve üst kodlar uygun şekilde yeniden boyutlandırılır ve matematiğin (ve muhtemelen Algoritmik gibi diğer ortamların) küçük önizlemelerine bile sahip olabilirsiniz.

Bu, LaTeX için gayet iyi çünkü koddan çıktıya eşleme genellikle diğer programlardan çok daha kolay; Sanırım daha genel amaçlı diller için bundan hiç hoşlanmam.

Emacs Yapabileceğiniz başka bir şey gibi semboller yerine ise ->ve forallile ve sırasıyla Haskell. Bu tür bir şeyin, Haskell'de hiç gerekli olmadığı durumlar dışında, önerdiğiniz gibi biçimlendirme yapmaya genişletilememesi için çok az sebep var.


2

Bir süre önce, bu soruyu kod biçimlendirme hakkında, programcıların kodlarını yazarken biçimlendirmek isteyip istemediklerini sordum.

Benim sorum sadece biçimlendirmenin girintili yönünü ele aldı, ancak bazı cevaplar genel olarak kod biçimlendirmesi için de geçerli olabilir. Cevaplardaki genel düşünce, programcıların kodlarının temsil edilme şeklindeki mutlak kontrolü kaybetmeye karşı olduklarını göstermektedir.

Kişisel deneyimim oldukça farklıydı. Normalde herkese açık araçları kullanmama rağmen, bazen ısmarlama editörüme XSLT yazmam gerekiyor. Bu düzenleyici, sol kenar boşluğunu girerek kod yazarken kodları biçimlendirir; bu nedenle, istenmeyen boşluklarla (XSLT'de önemli) sorun yaşamadım ve kodumun sözcük kaydırma yapmasına ve yine de biçimlendirmeye devam etmesine izin veririm. Oldukça doğal bir deneyim buluyorum, biçimlendirme stili yalnızca satır beslemelerinin bağlamı ve konumu tarafından kontrol ediliyor (deneyim dokunma duyarlı giriş aygıtları kullanıldığında özellikle ödüllendirici).

XSLT dengeli değilse, biçimlendirme aslında sorunun nerede olduğunu göstermeye yardımcı olur. Siz yazarken yatay olarak değişen kodun ayarlanması biraz zaman aldı ancak bu benim için artık bir rahatsızlık değil. Bununla birlikte, XSLT'nin dikey aralığını etkileyen biçimlendirme özelliklerini editörün neredeyse kullanılamaz hale getirdiğini gördüm ve bu yüzden bunları devre dışı bıraktım.

Sorunuza geri dönmek için, zengin kod biçimlendirmesinin daha yaygın olmamanın nedeninin, programlama dünyasında algıların değişmesinin uzun zaman alması olduğunu düşünüyorum. Zamanı gelecek, muhtemelen kod düzenlemesinin ağırlıklı olarak klavyesiz yapıldığı zamana denk geliyor.


2

Ayrıca birkaç dilde (Haskell, Ruby, Python, Erlang, CoffeeScript birkaç diğerleri) çentiklenme önemlidir. Yazı tipi boyutlarını değiştiriyorsanız, çözülmesi çok zor olabilir.

Çoğunlukla geleneği. Neredeyse 20 yıldır profesyonel olarak programlama yapıyorum ve beni deli edeceğinden şüpheliyim. Emacs veya VI’daki kitapları docbook ile yazıyorum, bu yüzden WYSIWIG hayranı değilim


2

Knuth'un CWEB'si bunu yapıyor, ancak yalnızca C / C ++ ve Pascal için çalışıyor. - Yine de bir göz atmalısın ... oldukça zarif. İki program vardır: ctangleve cweaveCWEB dosyalarını sırasıyla TeX ve C'ye birleştiren / ayıran programlar .


1
nowebneredeyse her dilde çalışıyor. Ve diğer birçok dil için de pek çok özelleşmiş okuryazarlık programlama sistemi vardır (lhs ve benzerleri). Bazı dillerin 1960'ların başından itibaren kutudan dizilmiş bir yeteneği vardı - bkz. En.wikipedia.org/wiki/Stropping_(programming)
SK-mantık

3
@ SK-mantık - Arrgh, lütfen bana okuryazar programlama olan dehşeti hatırlatma . Her hızlı kod incelemesini sıkıcı ve uzun bir belge incelemesine dönüştürerek , her son cümlenin ve yanlış yerleştirilmiş virgülün eleştirisini yapın. Neden savunma sanayinin bazı kısımları bunun asla bilmeyeceğim iyi bir fikir olduğunu düşünüyordu. WYSIWYG editörlerinin daha iyisini yapabileceğini sanmıyorum.
Mark Booth,

@Mark Booth, yanlış yapılırsa her şey bir korkuya dönüşebilir. Okuryazar programlama, uygun bir disiplin ile birleştirildiğinde harika bir araçtır. Okuryazar bir programlama aracı olmadan kodumu karmaşık TeX biçimli formüller, grafikler ve grafiklerle nasıl ekleyebileceğim hakkında hiçbir fikrim yok. Ve kod, bu ek açıklamalar olmadan daha fazla okunaklı ve bakımsız olmayacak.
SK-mantık

2

Herhangi biriniz daha önce böyle biçimlendirilmiş bir kod gördünüz mü veya fikrin hiç dikkate alınmadığını ve nihayetinde reddedildiğini biliyor musunuz?

Emin. Xcode, farklı sözdizimi için basit renklendirmenin ötesindeki stilleri destekler:

tarz metin içeren kaynak kodu

Kullandığımdan bu yana çok zaman geçti, ama bence Metrowerks CodeWarrior da stilli metni destekliyordu ve bu 10+ yıl önceydi.

Yine de stillerle fazladan gitmek istemezsiniz - stiller çok fazla değiştiğinde herhangi bir metin, kaynak kodu veya başka bir şey okumak daha zor olabilir. Özellikle, karıştırma boyutlarının rahatsız edici olduğunu ve sütunların sıralanmamasına neden olan herhangi bir şeyin rahatsız edici olduğunu düşünüyorum. Çoğu programcının hala monospaced yazı tipleri kullanmasının bir nedeni var.

Farklı bir soru, biçimlenmiş metnin dil sözdiziminin kendisinin bir parçası olarak kullanılması gerekip gerekmediğidir. Örneğin, derleyici, metnin bir işlev bildirimi olduğunu belirlemek için bazı metinlerin belirli bir şekilde stillendirildiğini mi kullanmalı? İlk başta delice gelebilir, ancak Python ve Fortran gibi diller zaten çentiklemeyi sözdizimi olarak kullanıyor. Bununla birlikte, bence başka yollardan ziyade sözdizimi tarafından yönlendirilen stili görmeye devam etme ihtimalimiz daha yüksek. Düz metin kullanabilmenin getirdiği birçok avantaj vardır (basit derleyiciler, platform bağımsızlığı, programcı tercihleri) ve stillerin yokluğunda kodları okunaklı kılmak için diğer gelenekler gelişti. Kod katlama ve gezinme menüleri gibi düzenleyici özellikleri


1

Kaynak kodun zengin biçimlendirmesinin çok popüler olmadığını düşünüyorum çünkü yapı ve anlamın çok daha önemli olduğu (ve yazması daha kolay) bilgi girişi için tasarlandı. Fontifikasyon, ekstra özel semboller ve beyaz boşluklar sadece gereksiz görsel gürültü ekler. Ancak oluşturulan belgeler için uygun olabilir.

WYSIWYG editörlerini (MS Word gibi) ve TeX (LaTeX) gibi sistemler arasında tercih edenler arasında dizgi dünyasında aynı konu hakkında hiç bitmeyen alev savaşı olmaz.

Genel olarak kesin bir cevap yoktur. Hepsi araçlara, kullanım durumlarına ve kişisel tercihlere bağlıdır.


1

Doxygen veya JavaDoc gibi araçlar zaten zengin metin kodu biçimlendirmesini gerektiriyor. Göz atma amacı için de kod köprü metni eklerler. Temel biçimlendirme için özel etiketler eklemeniz gerekmez.

Bu olsa WYSIWYG değildir.


0

Bunun var olduğunu söylemekten korkuyorum.

Geçmişte bazı Centura (ayrıca Gupta ya da SQL / Windows - eski bir " 4GL " olarak da bilinir) üzerinde çalıştım . Centura kodunu, not defteri gibi standart bir düzenleyicide, gerekli biçimlendirme düzeyine göre düzenlemek gerçekten mümkün değildi.

Bu şekilde biçimlendirilmiş bir kaynak dosyaya sahip olmak iyi bir fikir olabilir gibi görünse de, oldukça kısıtlayıcı ve acı verici bir gelişme gösterdiğini gördüm.

Ek olarak, biçimlendirme genellikle kaynak kontrolünde birleştirme yaparken sorunlara neden oldu.


0

Diğer cevaplara ek olarak, zengin format kullanmanın teknik zorluklarının yanı sıra kişisel tercihlerin de bir nesnesi olduğunu belirtmek isterim.

Düz metni düzenlerseniz, istediğiniz yazı tiplerini ve renkleri seçebilirsiniz ve bunlar otomatik olarak ayarlanır. Zengin metni düzenlerseniz, el ile ayarlanan belirli renkleri ve yazı tiplerini beğenmezseniz ne olur?


1
Bunun doğru olduğunu sanmıyorum. Programcılar zengin metin kullanıyorsa, programın yapısını tanımlayan bir tür anlamsal işaretleme yapan bir jeneratör ve ardından yazı tipi ve renk bilgilerini içeren kullanıcı tarafından özelleştirilebilir bir stil sayfası olacaktır.
Peter Olson

@PeterOlson o zaman, stil sayfanız olmadan programları okuyamazsınız, çünkü sadece metin dizelerinin tanımlamasını tanımayacaksınız. Bu, şahsen tanışırken hiç kimsenin bir şey gösteremediği veya yazamadığı anlamına gelir. Aksine, şu anda yazı tipleri ve renkler tamamen isteğe bağlıdır ve anlamlara zarar vermeden değiştirilebilir.
corvinus

0

Bunun sebebi, henüz kimsenin kod okuma ve kod yazmayı ayırmamasıdır. En azından ana akım olmaz. Bazen uzun zaman önce dokunduğunuz kodu veya diğer geliştiriciler tarafından oluşturulan kodu okumalısınız. Muhtemelen bu kaynaktan tek bir bayt değiştirmeye hazır olana kadar çok zaman harcamanız gerekecektir. Bu, kolay anlaşılması için ne gerekiyorsa yapabilecek "okuma" modu olabilir (yazı tipi boyutu, yeniden biçimlendirme, alt komut dosyası, süper komut dosyası vb.). Hazır olduğunuzda, editör "yazma" moduna geçebilir ve daha az kısıtlayıcı olabilir ve "en az sürpriz kuralına" daha uygun davranabilir

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.