Looks like the publisher may have taken this series offline or changed its URL. Please contact support if you believe it should be working, the feed URL is invalid, or you have any other concerns about it.
ออฟไลน์ด้วยแอป Player FM !
พอดคาสต์ที่ควรค่าแก่การฟัง
สปอนเซอร์
Lisp Programlama Dilini Diğerlerinden Farklı Kılan Unsurlar (What Made Lisp Different)
Fetch error
Hmmm there seems to be a problem fetching this series right now. Last successful fetch was on March 19, 2024 22:09 (
What now? This series will be checked again in the next day. If you believe it should be working, please verify the publisher's feed link below is valid and includes actual episode links. You can contact support to request the feed be immediately fetched.
Manage episode 383412286 series 3528279
"Paul Graham'ın 2001'de yazıp 2002'de revize ettiği bu makale, Lisp programlama dilinin diğer dillerden farklılaşan dokuz özgün özelliğini anlatıyor. Bu özellikler; koşullu ifadeler, fonksiyon tipi, özyineleme, yeni bir değişken kavramı, çöp toplama, ifadelerden oluşan programlar, sembol tipi, kod için bir gösterim ve dilin tamamen kullanılabilir olması. Bu özelliklerin çoğu bugün yaygın olarak kullanılan dillerde de bulunuyor. Graham, Lisp'in 1950'lerin sonunda tasarlandığında, bu özelliklerin çoğunun olağan programlama uygulamalarından çok uzak olduğunu belirtiyor.
---
# Lisp Programlama Dilini Diğerlerinden Farklı Kılan Unsurlar (What Made Lisp Different)
Aralık 2001 (Gözden geçirme: Mayıs 2002)
_(Bu yazıyı, LL1 e-posta listesinden gelen birkaç soruyu yanıtlamak için kaleme aldım. Şimdi ise ""Zeki Çocukların İntikamı"" başlıklı yazımda yer alıyor.)_
1950'lerin sonunda McCarthy, Lisp'i icat ettiğinde, bu dil, o dönemin önemli dillerinden Fortran gibi mevcut dillerden çok daha farklı ve yenilikçi bir yaklaşımdı.
Lisp, tamı tamına dokuz yeni fikri bünyesinde barındırıyordu:
***
**1. Koşullu İfadeler.** Koşullu ifade, bir ""eğer-öyleyse-aksi takdirde"" mantığına dayanır. Şimdi bunu hepimiz gayet iyi biliyoruz ve standart bir özellik olarak görüyoruz. Ancak aslında McCarthy'nin Lisp'i geliştirirken icat ettiği bir şey. (O dönemde Fortran'da sadece donanımdaki dal komutuna dayanan bir koşullu atlama işlemi vardı.) McCarthy, Algol komitesinde yer aldı ve bu koşullu ifadeleri Algol diline ekledi. Bu sayede bu kavram diğer birçok dile de yayıldı.
**2. Fonksiyon Türü.** Lisp'te, fonksiyonlar birinci sınıf vatandaştır - onlar da tam sayılar, metinler vb. gibi birer veri türüdür. Bunlar somut bir biçimde ifade edilebilir, değişkenlerde saklanabilir, argüman olarak geçebilir ve daha pek çok şey.
**3. Özyineleme (Recursion).** Özyineleme, Lisp'ten önce de matematiksel bir kavramdı elbette, ancak onu destekleyen ilk programlama dili Lisp oldu. (Bunun, fonksiyonları birinci sınıf nesneler olarak kabul etmekle zaten var olduğunu da söyleyebiliriz.)
**4. Değişkenlerin Yeni Bir Konsepti.** Lisp dilinde, tüm değişkenler efektif olarak işaretçi görevi görür. Değerler tipleri belirler, değişkenler değil. Bir değişkeni atamak ya da bağlamak, onun işaret ettiği değeri değil, işaretçiyi kopyalamak demektir.
**5. Çöp Toplama.**
**6. İfadelerden Oluşan Programlar.** Lisp programları, her biri bir değer döndüren ifadelerin ağaçlarıdır. (Bazı Lisp çeşitlerinde, ifadeler birden çok değer verebilir.) Bu, Fortran ve çoğu sonraki dil ile karşılaştırıldığında farklılık gösterir çünkü bu diller ifadeler ve ifadeleri birbirinden ayırır.
Fortran dilinde bu ayrımın olması doğaldı çünkü (giriş formatının delikli kartlar olduğu bir dilde şaşırtıcı olmayan bir şekilde) dil, satır bazlıydı. İfadeleri iç içe geçiremezsiniz. Dolayısıyla, matematik işlemlerinin çalışabilmesi için ifadelere ihtiyacınız varken, başka hiçbir şeyin bir değer döndürmesi gereksizdi çünkü onu bekleyen bir şey olamazdı.
Bu kısıtlama, blok yapılandırılmış dillerin gelmesiyle ortadan kalktı, ancak o zaman çok geçti. İfadeler ve cümleler arasındaki farklılık çoktan yerleşmişti. Bu ayrım, Fortran'dan Algol'e ve sonrasında da onların tüm alt dillerine yayıldı.
Bir dil tamamen ifadelerden oluşuyorsa, bu ifadeleri istediğiniz gibi bir araya getirebilirsiniz. İşte bir örnek (Arc dilinin sözdizimi kullanılarak):
(foo durumu için x'i 1 yap, değilse x'i 2 yap)
veya
(= x (if foo 1 2))
**7. Sembol Türü.** Semboller, bir işaretçiyi karşılaştırarak eşitliği kontrol edebilme özelliğiyle, karakter dizilerinden ayrılır.
**8. Sembol Ağaçları Kullanılarak Kodlama** için bir notasyon.
**9. Dil Her Zaman Elinizin Altında.** Okuma, derleme ve çalışma zamanı arasında gerçek bir fark yoktur. Okurken kodu derleyebilir veya çalıştırabilirsiniz, kodu derlemeye devam ederken okuyabilir veya çalıştırabilirsiniz ve aynı şekilde, kod çalışırken de okuyabilir veya derleyebilirsiniz.
Okuma zamanında kod çalıştırmak, kullanıcıların Lisp'in dili üzerinde değişiklik yapabilmelerini sağlar; derleme zamanında kod çalıştırmak, makroların temelini oluşturur; çalışma zamanında derleme, Lisp'in Emacs gibi programlarda genişletme dili olarak kullanılmasını mümkün kılar; ve çalışma zamanında okuma, programların s-ifadeleri (semboller) kullanarak iletişim kurabilmelerini sağlar - bu fikir son zamanlarda XML olarak yeniden popüler oldu.
***
Lisp ilk kez ortaya çıktığında, bu tür düşünceler, 1950'lerin sonlarında mevcut olan donanıma dayanan o zamanki programlama alışkanlıklarından oldukça uzaktaydı.
Zamanla, popüler diller arasında bir evrim gözlenmiştir ve bu evrimin sonucunda varsayılan dil, Lisp'e dönüşmüştür. 1'den 5'e kadar olan özellikler artık yaygın hale gelmiştir. 6 numaralı özellik ana akımda belirmeye başlamıştır. Python, 7'ye benzer bir özelliğe sahip, ancak bunun için belirli bir dil bilgisi yok gibi görünüyor. 8 numaralı özellik, Lisp makrolarının oluşturulmasını sağlayan (9 ile birlikte) özellik, şimdilik yalnızca Lisp'e özgüdür. Bunun nedeni belki de (a) bu özelliğin parantez ya da benzer bir şey gerektirmesi ve (b) bu son güç artışını eklediğinizde, artık yeni bir dil icat ettiğinizi iddia edemezsiniz, sadece yeni bir Lisp lehçesi tasarladığınızı söyleyebilirsiniz. ;-)
Lisp, bugünkü programcılar için yararlı olabilir, ancak onu diğer dillerin kabul ettiği rastgele çözümlerden farklılaştığı şekilde tanımlamak garip. Büyük olasılıkla McCarthy'nin de Lisp'i bu şekilde düşünmediğini sanıyorum. Lisp, Fortran'daki hataları gidermek için tasarlanmamıştı; daha çok bir hesaplama aksiyomu oluşturma girişiminin yan ürünü olarak ortaya çıkmıştı.""
---
İlişkili Konseptler: Lisp programlama dili, Lisp'in tarihi, Lisp'in özellikleri, Lisp vs Fortran, Lisp ve özyineleme, Lisp fonksiyon tipi, Lisp ve çöp toplama, Lisp ifadeleri, Lisp sembol tipi, Lisp kod notasyonu, Lisp dilinin kullanılabilirliği, programlama dillerinin evrimi, Lisp makroları, Lisp ve Python, Lisp ve XML, John McCarthy ve Lisp, hesaplamayı aksiyomatize etme."
216 ตอน
Fetch error
Hmmm there seems to be a problem fetching this series right now. Last successful fetch was on March 19, 2024 22:09 (
What now? This series will be checked again in the next day. If you believe it should be working, please verify the publisher's feed link below is valid and includes actual episode links. You can contact support to request the feed be immediately fetched.
Manage episode 383412286 series 3528279
"Paul Graham'ın 2001'de yazıp 2002'de revize ettiği bu makale, Lisp programlama dilinin diğer dillerden farklılaşan dokuz özgün özelliğini anlatıyor. Bu özellikler; koşullu ifadeler, fonksiyon tipi, özyineleme, yeni bir değişken kavramı, çöp toplama, ifadelerden oluşan programlar, sembol tipi, kod için bir gösterim ve dilin tamamen kullanılabilir olması. Bu özelliklerin çoğu bugün yaygın olarak kullanılan dillerde de bulunuyor. Graham, Lisp'in 1950'lerin sonunda tasarlandığında, bu özelliklerin çoğunun olağan programlama uygulamalarından çok uzak olduğunu belirtiyor.
---
# Lisp Programlama Dilini Diğerlerinden Farklı Kılan Unsurlar (What Made Lisp Different)
Aralık 2001 (Gözden geçirme: Mayıs 2002)
_(Bu yazıyı, LL1 e-posta listesinden gelen birkaç soruyu yanıtlamak için kaleme aldım. Şimdi ise ""Zeki Çocukların İntikamı"" başlıklı yazımda yer alıyor.)_
1950'lerin sonunda McCarthy, Lisp'i icat ettiğinde, bu dil, o dönemin önemli dillerinden Fortran gibi mevcut dillerden çok daha farklı ve yenilikçi bir yaklaşımdı.
Lisp, tamı tamına dokuz yeni fikri bünyesinde barındırıyordu:
***
**1. Koşullu İfadeler.** Koşullu ifade, bir ""eğer-öyleyse-aksi takdirde"" mantığına dayanır. Şimdi bunu hepimiz gayet iyi biliyoruz ve standart bir özellik olarak görüyoruz. Ancak aslında McCarthy'nin Lisp'i geliştirirken icat ettiği bir şey. (O dönemde Fortran'da sadece donanımdaki dal komutuna dayanan bir koşullu atlama işlemi vardı.) McCarthy, Algol komitesinde yer aldı ve bu koşullu ifadeleri Algol diline ekledi. Bu sayede bu kavram diğer birçok dile de yayıldı.
**2. Fonksiyon Türü.** Lisp'te, fonksiyonlar birinci sınıf vatandaştır - onlar da tam sayılar, metinler vb. gibi birer veri türüdür. Bunlar somut bir biçimde ifade edilebilir, değişkenlerde saklanabilir, argüman olarak geçebilir ve daha pek çok şey.
**3. Özyineleme (Recursion).** Özyineleme, Lisp'ten önce de matematiksel bir kavramdı elbette, ancak onu destekleyen ilk programlama dili Lisp oldu. (Bunun, fonksiyonları birinci sınıf nesneler olarak kabul etmekle zaten var olduğunu da söyleyebiliriz.)
**4. Değişkenlerin Yeni Bir Konsepti.** Lisp dilinde, tüm değişkenler efektif olarak işaretçi görevi görür. Değerler tipleri belirler, değişkenler değil. Bir değişkeni atamak ya da bağlamak, onun işaret ettiği değeri değil, işaretçiyi kopyalamak demektir.
**5. Çöp Toplama.**
**6. İfadelerden Oluşan Programlar.** Lisp programları, her biri bir değer döndüren ifadelerin ağaçlarıdır. (Bazı Lisp çeşitlerinde, ifadeler birden çok değer verebilir.) Bu, Fortran ve çoğu sonraki dil ile karşılaştırıldığında farklılık gösterir çünkü bu diller ifadeler ve ifadeleri birbirinden ayırır.
Fortran dilinde bu ayrımın olması doğaldı çünkü (giriş formatının delikli kartlar olduğu bir dilde şaşırtıcı olmayan bir şekilde) dil, satır bazlıydı. İfadeleri iç içe geçiremezsiniz. Dolayısıyla, matematik işlemlerinin çalışabilmesi için ifadelere ihtiyacınız varken, başka hiçbir şeyin bir değer döndürmesi gereksizdi çünkü onu bekleyen bir şey olamazdı.
Bu kısıtlama, blok yapılandırılmış dillerin gelmesiyle ortadan kalktı, ancak o zaman çok geçti. İfadeler ve cümleler arasındaki farklılık çoktan yerleşmişti. Bu ayrım, Fortran'dan Algol'e ve sonrasında da onların tüm alt dillerine yayıldı.
Bir dil tamamen ifadelerden oluşuyorsa, bu ifadeleri istediğiniz gibi bir araya getirebilirsiniz. İşte bir örnek (Arc dilinin sözdizimi kullanılarak):
(foo durumu için x'i 1 yap, değilse x'i 2 yap)
veya
(= x (if foo 1 2))
**7. Sembol Türü.** Semboller, bir işaretçiyi karşılaştırarak eşitliği kontrol edebilme özelliğiyle, karakter dizilerinden ayrılır.
**8. Sembol Ağaçları Kullanılarak Kodlama** için bir notasyon.
**9. Dil Her Zaman Elinizin Altında.** Okuma, derleme ve çalışma zamanı arasında gerçek bir fark yoktur. Okurken kodu derleyebilir veya çalıştırabilirsiniz, kodu derlemeye devam ederken okuyabilir veya çalıştırabilirsiniz ve aynı şekilde, kod çalışırken de okuyabilir veya derleyebilirsiniz.
Okuma zamanında kod çalıştırmak, kullanıcıların Lisp'in dili üzerinde değişiklik yapabilmelerini sağlar; derleme zamanında kod çalıştırmak, makroların temelini oluşturur; çalışma zamanında derleme, Lisp'in Emacs gibi programlarda genişletme dili olarak kullanılmasını mümkün kılar; ve çalışma zamanında okuma, programların s-ifadeleri (semboller) kullanarak iletişim kurabilmelerini sağlar - bu fikir son zamanlarda XML olarak yeniden popüler oldu.
***
Lisp ilk kez ortaya çıktığında, bu tür düşünceler, 1950'lerin sonlarında mevcut olan donanıma dayanan o zamanki programlama alışkanlıklarından oldukça uzaktaydı.
Zamanla, popüler diller arasında bir evrim gözlenmiştir ve bu evrimin sonucunda varsayılan dil, Lisp'e dönüşmüştür. 1'den 5'e kadar olan özellikler artık yaygın hale gelmiştir. 6 numaralı özellik ana akımda belirmeye başlamıştır. Python, 7'ye benzer bir özelliğe sahip, ancak bunun için belirli bir dil bilgisi yok gibi görünüyor. 8 numaralı özellik, Lisp makrolarının oluşturulmasını sağlayan (9 ile birlikte) özellik, şimdilik yalnızca Lisp'e özgüdür. Bunun nedeni belki de (a) bu özelliğin parantez ya da benzer bir şey gerektirmesi ve (b) bu son güç artışını eklediğinizde, artık yeni bir dil icat ettiğinizi iddia edemezsiniz, sadece yeni bir Lisp lehçesi tasarladığınızı söyleyebilirsiniz. ;-)
Lisp, bugünkü programcılar için yararlı olabilir, ancak onu diğer dillerin kabul ettiği rastgele çözümlerden farklılaştığı şekilde tanımlamak garip. Büyük olasılıkla McCarthy'nin de Lisp'i bu şekilde düşünmediğini sanıyorum. Lisp, Fortran'daki hataları gidermek için tasarlanmamıştı; daha çok bir hesaplama aksiyomu oluşturma girişiminin yan ürünü olarak ortaya çıkmıştı.""
---
İlişkili Konseptler: Lisp programlama dili, Lisp'in tarihi, Lisp'in özellikleri, Lisp vs Fortran, Lisp ve özyineleme, Lisp fonksiyon tipi, Lisp ve çöp toplama, Lisp ifadeleri, Lisp sembol tipi, Lisp kod notasyonu, Lisp dilinin kullanılabilirliği, programlama dillerinin evrimi, Lisp makroları, Lisp ve Python, Lisp ve XML, John McCarthy ve Lisp, hesaplamayı aksiyomatize etme."
216 ตอน
ทุกตอน
×
1 OpenAI CEO'su Sam Altman ve Lex Friedman ile Yapay Zeka Üzerine Derin Bir Sohbet (Mart 2024) 1:47:17

1 Bir Patrona Sahip Olmanız Gerektiği Fikri Üzerine: Büyük Şirketlerde Çalışmanın Doğal Olmayışı (You Weren't Meant to Have a Boss) 20:27


1 Konuşur Gibi Yazmak: İnsanların Yazılarınızı Okumasını Sağlamanın Basit Yolu (Write Like You Talk) 6:39



1 Televizyonun Neden Bilgisayarlar Karşısında Kaybettiği Gerçeği ve Yeni Medya Anlayışı (Why TV Lost) 12:10

1 Kötü Ekonomi Dönemlerinde Bir Startup Kurmanın Neden Mantıklı Olabileceği Üzerine (Why to Start a Startup in a Bad Economy) 9:02

1 Bir Girişim Başlatmamak İçin Bahaneler ve Bunların Mantıksızlığı (Why to Not Not Start a Startup) 45:06


1 Daha Fazla Google Olmamasının Ardındaki Sebepler: Yatırımcılar ve Başlangıç Aşamasındaki Şirketler Üzerine Bir İnceleme (Why There Aren't More Googles) 12:25

1 Amerika'da Start-Up'ların Yoğunlaşma Sebepleri ve Diğer Ülkelerin Bu Başarıyı Yakalayabilme Yolları (Why Startups Condense in America) 36:44


1 Akıllı İnsanların Neden Kötü Fikirlere Sahip Olduğu Üzerine Bir İnceleme (Why Smart People Have Bad Ideas) 23:13

1 Nerdler Neden Popüler Değil? Okul Hayatının Gerçeklikleri Üzerine Bir İnceleme (Why Nerds are Unpopular) 42:48

1 Girişimcilere Neden İyi İnsan Olmanın Zarar Vermeyeceği Üzerine (Why It's Safe for Founders to Be Nice) 8:01

1 Neden Arc Özellikle Nesne Tabanlı Programlama Üzerine Kurulu Değil? (Why Arc Isn't Especially Object-Oriented) 4:24

1 Silikon Vadisi'ni Keşfetmek: Gözlerden Kaçan Detaylarla Bir Gezi Rehberi (Where to See Silicon Valley) 8:56

1 Lise Hayatında Bilmeniz Gerekenler: Merak, Hedefler ve Gerçek Dünya (What You'll Wish You'd Known) 34:28




1 İnternet Balonu'nun Doğru Bildiği Şeyler: Teknoloji ve Start-Up Dünyasına Dair Gözlemler (What the Bubble Got Right) 30:58

1 Bir Start-Up'ı Kurarken Karşılaşabileceğiniz Gerçekler ve Beklenmedik Durumlar (What Startups Are Really Like) 40:15

1 Başarılı Startup'ların İlk Görünümündeki 'Saçmalık' Üzerine (What Microsoft Is This Altair Basic Of?) 4:24



1 Silikon Vadisi'nde Bir Mimardan Gözlemler: Start-Up Dünyasına Dair Sürprizler (What Kate Saw in Silicon Walley) 7:38
ขอต้อนรับสู่ Player FM!
Player FM กำลังหาเว็บ