30.12.2022

LaTeX ve GitHub

Bu yıl iki önemli teknoloji birleşti ve matematik sayfalarının daha güzel görünmesini ve daha kolay yapılmasını sağladı. Matematik formülleri kitap kalitesinde yazmanın en kolay yolu olan LaTeX ile kendi sayfalarımızı yayınlamanın en etkin yolu olan GitHub nasıl bir araya geldi? Sorunun cevabı üç meşhur yazılım sisteminin tarihçesinde...

Şu GitHub sayfası bugün vardığımız yeri özetliyor:
maeyler.github.io/Sunumlar/math/sample

Bu iki teknolojiyi web sayfaları (HTML) birleştiriyor

TeX 1978 ve LaTeX 1984
Bilgisayar bilimlerindeki bütün bilgileri bir araya getirip 5 ciltlik bir ansiklopedi yazmak isteyen Donald Knuth, 3. cildi hazırlarken bir sürprizle karşılaştı: Geleneksel baskı teknikleri yerini bilgisayarlı dizgi makinelerine bırakıyordu. Lakin yeni ürünlerin kalitesi kabul edilir gibi değildi. Durumu düzeltmek için bir yılını feda etmeye karar verdi ve üniversiteden bir yıl izin alarak işe koyuldu.

Bir sene sonunda ürün ortaya çıktı ama titiz bir yazar için yeterli değildi. Knuth'un kendi onayını alması için 10 yıl daha geçti. Tek kişilik çabanın ürünü olan TeX hakikaten fizik ve mühendisliğin bütün alanlarında standart yazım dili haline geldi. 
https://en.wikipedia.org/wiki/TeX

LaTeX, bu sisteme akademik yayınları kolaylaştırmaya yönelik pek çok şablon eklemiş. Bu özellikler hazır geldiği için TeX yazılımının yaygınlaşmasına önemli bir katkı sağlıyor.

Ansiklopediye ne oldu dersiniz? 4. cilt iki kitap olarak tamamlandı. 85 yaşındaki yazar, 5. ciltten sonra geri dönüp ilk üç cildi yeniden yazmayı planlıyor! Sonra da hepsini tek ciltte özetlemek istiyor. Hayat hakikaten kısa, bilimin bir dalı bile sığmıyor...

HTML 1993 ve MD 2004
TeX yazılımının henüz bilinmediği 1980 yılında, tanınmamış bir fizikçi, Tim Berners-Lee dokümanlar arasında hızlı geçiş sağlayan basit bir sistem önerdi. Teklif "çok basit, işimize yaramaz" diyerek çöpe atıldı. Basitliğin büyük bir güç olduğunun anlaşılması 10 yıldan fazla sürdü. Tek kişilik çabanın ürünü olan HTML, hakikaten bütün web sayfalarının standart dili haline geldi. Bunu bilgisayar mühendisleri tasarlasaydı çok daha karmaşık kapalı bir sistem olurdu.
https://en.wikipedia.org/wiki/HTML

Lakin, HTML ile sayfa hazırlamak (bütün basitliğine rağmen) zor geliyordu. Adındaki M harfinin "markup" olduğunu gören iki yazılımcı, buna nazire olarak MarkDown kavramını geliştirdi. Buradaki katkı HTML ile kıyaslanamaz ama işleri basitleştiren her gayret kayda değer.

Git 2005 ve GitHub 2008
Bu arada, başka bir basitleştirme ustası, Linus Torvalds dev bir yazılım olan Linux işletim sistemini açık kaynak olarak dünyaya kabul ettirmişti. Linux 10 yıl içinde iyice büyüdü ve çok sayıda yazılımcının katkısı ile güçlendi. Farklı kişilerin yaptığı işleri kontrol edebilmek için geliştirilen Git, karmaşık bir sürüm yönetim sistemi. Karmaşıklığına rağmen, çok basit komutlarla kullanılıyor. Tek kişilik çabanın ürünü olarak ortaya çıkan Git, bugün pek çok yazılım sisteminin standart aracı haline geldi.
https://en.wikipedia.org/wiki/git

Lakin tek başına sürüm kontrolü yetmiyor. Yazılımı buluta kaydetmek ve takımların çalışmasını uzaktan yönetebilmek de lazım. GitHub işte bu ihtiyaca cevap veriyor. Eski bir öğrencim "GitHub yazılımcılar için CV görevi görüyor" demişti, ne kadar doğru olduğunu içine girince anladım.

Kendi hayatıma etkileri
1979'da doktorayı tamamlarken çok kişi elektronik yöntemlere geçmişti. Benim tezim ise (o bölümde) daktiloda yazılan son işlerden biri olmalı. TeX henüz. duyulmamıştı. 1988'de doçent olarak Bilkent'e gittiğimde nerdeyse bütün makalelerin LaTeX ile yazıldığını gördüm. O sırada yeni çıkan Mac yazılımını (What You See Is What You Get) tercih ettim, çünkü TeX bana çok zor göründü. 2008'de talebemin yardımı ile bir makale yazdım ama o da yayınlanmadı. Yani, TeX akademik hayatımda hiç etkili olmadı.

HTML ise 2004'de öğrenip uyguladığım bir dil. O zaman takdir ettim ama hayatıma 2018'de gerçekten girdi. O sırada üç yıldır GitHub kullanıyor ve öğretiyordum. MarkDown ile tanışmam da aynı döneme rastlıyor. Son beş yıldır bu iki teknolojiyi yakından takip ediyorum.

Hepsi bir araya gelince, Matemacik sayfalarını elden geçirmek ve gerçek bir kitap kalitesini sağlamak mümkün olacak, hemen başlıyorum. Şöyle bir değişim olacak:

Düz metin ve LaTeX -- çok fark var!


Bir ay sonra
Matemacik sayfalarını TeX ile yazarken en önemli sorun "inline math" denilen metin içindeki formüller oldu. Standart yöntem olan "$...$" yaklaşımı, kullandığım MathJax içinde aktif değildi. Halbuki GitHub ve VS Code standarda uygun çalışıyordu. Bunun yöntemini 2016 tarihli bir makalede buldum -- demek 2017'de başlayan bu blog daha o zaman TeX ile yazılabilirmiş. Çevremde bunu bilen kimse olmadığı için 5 yıl gecikmeyle katıldım...

Ocak 2023 sonunda çözümü yayınladım ve son 6 yazıyı düzelttim. Eski sürümle kıyaslamak için web adresindeki tarihi "p" yapmak yeterli. Bir örnek:
https://matemacik.blogspot.com/2020/06/carpsan-toplar.html TeX
https://matemacik.blogspot.com/p/carpsan-toplar.html  Düz metin

TeX öncesi ve sonrası aynı denklemler


29.12.2022

Ardışık toplama

Erkan Türe Hocam bu bilmeceyi gönderdi, hemen kontrol edip baktım, toplama işlemleri doğru. "Ardında bir basitlik olmalı" dedim ve buldum.

1. soru: $n+1$ ardışık sayının toplamı, takip eden $n$ sayının toplamına eşit olsun.

Örnek olarak $\mathbf{n=3}$ alalım. Öyle $x$ sayısı arıyoruz ki
$ x+(x+1)+(x+2)+(x+3) = (x+4)+(x+5)+(x+6) $
olsun. Sağdaki her terim için solda $3$ eksiği var,
aranan değer $3$ kere $3$, yani $x=9$ bulunur.

O halde, $9+10+11+12 = 13+14+15$

Verilen $n$ değeri için genelleştirelim:
$ x+(x+1)+\ldots+(x+n) = (x+n+1)+\ldots+(x+n+n) $
olsun. Sadeleştirince sağda $n$ kere $n$, yani $x=n^2$ bulunur

Cevap:
Verilen $n$ sayısının karesinden başlayan $n+1$ ardışık sayının toplamı,
takip eden $n$ sayının toplamına eşittir. 

Aşağıdaki şekil aynı cevaba geometri ile ulaşıyor:

Mavi çizgi toplam alanı iki eşit parçaya böler
O halde mavi alanlar eşit olmalı

2. soru: $n+1$ ardışık sayının kareleri toplamı, takip eden $n$ sayının kareleri toplamına eşit olsun.

Hesap kolaylığı açısından, ilk sayıya değil, tam ortadaki sayıya $x$ diyelim.

Örnek olarak $\mathbf{n=3}$ alalım. Öyle $x$ sayısı arıyoruz ki
$ (x−3)^2+(x−2)^2+(x−1)^2+x^2 = (x+1)^2+(x+2)^2+(x+3)^2 $
olsun. Kareli ve sabit terimleri sadeleştirince,
$ −6x−4x−2x+x^2 = 2x+4x+6x $
$x^2 = 4(1+2+3)x$ ve buradan $x = 24$ bulunur.

$21^2+22^2+23^2+\textbf{24}^2 = 25^2+26^2+27^2$
sonucuna hiç aritmetik yapmadan ulaştık!

Verilen $n$ değeri için genelleştirelim:
$(x-n)^2+\ldots+(x-1)^2+x^2 = (x+1)^2+\ldots+(x+n)^2$
olsun. Kareli ve sabit terimleri sadeleştirince,
$x^2 = 4(1+\ldots+n)x$ ve buradan $x = 2n(n+1)$ bulunur.

Cevap:
Aranan ardışık sayıların ilki $n(2n+1)$ olmalıdır.
(Yukarıdaki bilmecede bu formülü doğrulayın)
Peki, dizideki son sayı ne olur?