Onur Dayıbaşı

CV
none

Pre-Modules Nedir ?

Pre-modules (90 ortası, 2000 başlarına kadar) olan zamanlarda IE ve Netscape arasındaki yarışma devam ediyordu. Tarayıcılar üzerinde yapabildikleriniz çok kısıtlıydı. Bu süreçte JS kullanımı oldukça azdı tüm işlerinizi tek bir html(index) dosyası içerisinde script tag ile inline-scripting işlemlerinizi yapabilmekteydiniz.

1<html>
2<body>
3 JS Script
4<script>
5 var sum=3+6;
6 </script>
7<div id="msg"></div>
8 <div id="sum"></div>
9<script>
10 document.getElementById("sum").innerHTML = sum;
11</script>
12</body>
13<script>
14 document.getElementById("msg").innerHTML = "Merhaba Dunya";
15</script>
16</html>

Result

Script tag diğer bir kullanımıda index.html ile diğer js bilgilerini birbirinden ayrıştırmaktır. Örneğin yukarıdaki küçük kod parçaları yerine tim js kodlarını tek bir dosyada toplayabilirim . Örneğin tüm kodları index.js dosyasının içerisinde toplayabilirim. Veya DOMOps.js , MathOps.js şeklinde farklı farklı dosyalara bölebilirim.

Bence zaten Modülerlik ilk bölümle HTML , JS ve CSS dosyaların ayrı ayrı dosyalara bölünmesi ile gerçekleşmiştir. İlerleyen süreçlerde JS kodları mantıklarına göre ayrı ayrı dosyalara bölünerek kodun okunabilirliği ve daha büyük ölçekte yazılabilmesi imkanı buldu.

1<script src=”URL”>

Peki bu yapı büyük ölçekli yazılımlar geliştirmek için uygun mu ?

Bu sorunun cevabını direk JS oluşturan Brendan Eich, vermiş. Javascript bu şekilde geniş ölçekte kullanılacağını hiç kimsenin düşünmediğini. Böyle ufak code parçaları ile başlangıç seviyesindekileri hedeflediklerini. Gmail vb büyük kod geliştirebilmek için güçlü API’lere ve modül sistemine ihtiyaç olduğundan bahsetmiş.

Brendan Eich JS hakkındaki düşünceleri

Peki bu kadar basit bir dil nasıl olurda günümüzdeki halini alarak Belkide dünyanın en çok kullandığı dil halini alır ve farklı türdeki geliştiricilerin ihtiyaçlarını karşılar? Basit bir dil demek belkide yanlış çünkü ileride anlatacağım Fonksiyonel Programlama içeren Scheme ve Self dillerinden esinlenerek Javascript geliştirilmiştir.

Self programla dilinin özellikleri bold ile işaretlediklerimin prototype-base inheritance temellerini oluşturduğunu görebilirsiniz.

About Self Self is a prototype-based dynamic object-oriented programming language, environment, and virtual machine centered around the principles of simplicity, uniformity, concreteness, and liveness. Self includes a programming language, a collection of objects defined in the Self language, and a programming environment built in Self for writing Self programs. The language and environment attempt to present objects to the programmer and user in as direct and physical a way as possible. The system uses the prototype-based style of object construction. Self contains a user interface and programming environment designed for “serious” programming, enabling the programmer to create and modify objects entirely within the environment, and then save the object into files for distribution purposes. The metaphor used to present an object to the user is that of an outliner, allowing the user to view varying levels of detail. Also included in the environment is a graphical debugger, and tools for navigation through the system.

Scheme dilinin bold ile işaretlediğim kısımların ES6 ile birlikte gelen Fonksiyonel Programla özellikleri High Order Functions, vb temellerini oluşturduğunu görebilirsiniz.

Scheme is a general-purpose computer programming language. It is a high-level language, supporting operations on structured data such as strings, lists, and vectors, as well as operations on more traditional data such as numbers and characters. While Scheme is often identified with symbolic applications, its rich set of data types and flexible control structures make it a truly versatile language. Scheme has been employed to write text editors, optimizing compilers, operating systems, graphics packages, expert systems, numerical applications, financial analysis packages, virtual reality systems, and practically every other type of application imaginable. Scheme is a fairly simple language to learn, since it is based on a handful of syntactic forms and semantic concepts and since the interactive nature of most implementations encourages experimentation. Scheme is a challenging language to understand fully, however; developing the ability to use its full potential requires careful study and practice.

Problem neydi? Bu dönemde ne gibi sorunlar ve zorluklar yaşanıyordu ?

  • Kodun tekrar kullanabilirliği
  • Diğer kodlara bağımlılığın yönetilmesi
  • Bakım zorlukları

Referanslar