English translation by ChatGPT
ليه الجافا سكريبت لغة غريبة
لو بيجيلك احساس إن الجافا سكريبت كلغة برمجة فيها حاجات غريبة او مش منطقية أو تصرفها بيختلف فده مش حاجة غريبة أو مش عيب فيك بالفعل الجافا سكريبت فيها كل ده بس مش ذنبها كلغة برمجة و دي حاجة متقللش من قوتها بس علشان نفهم ليه الجافا سكريبت بتتصرف بغرابة او عدم منطقية فلازم نفهم تاريخها من البداية علشان نتفهم الموضوع ده لازم نفهم الحكاية من بدايتها ,البداية كانت مع حرب المتصفحات اللي حصلت في التسعينات و وقتها كانت مواقع الإنترنت في بداية انتشارها و كانت امكانيتها ضعيفة لان سرعة الأنترنت كانت ضعيفة جدا و امكانيات الأجهزة كانت ضعيفة في الوقت ده مايكروسوفت كانت مسيطرة جدا علي سوق السوفتوير عموما و أنظمة التشغيل خصوصا و مكنتش مهتمة بالإنترنت و المتصفحات لكن لما الإنترنت بدأت تنتشر و بدأ يكون فيه مواقع كتيرة و حسوا ان الإنترنت هيكون ليه قيمة كبيرة بدأوا يعملوا متصفح الإنترنت اكسبلولر و يدمجوه في نظام التشغيل ويندوز و الحرب كانت مشتعلة بين الإنترنت اكسبلولر و متصفح نيتسكيب و نتسكيب كان بينافس بقوة و بشراسة و في سنة 1995 عملوا حاجة جديدة لغة برمجة بتشتغل علي المتصفح نفسه و هي الجافاسكريبت و كانت وقتها كل مميزاتها انها تعرف تتحكم في شكل الموقع و شكل عناصره يعني مثلا لما تقف علي عنصر لونه يتغير و لا العناصر اللي حواليه شكلها يختلف او انها تعمل خلفيات متحركة يعني في اخر التسعينات انا فاكر ان تقريبا معظم المواقع كانت بتعمل شكل تلج بينزل في شهر ديسمبر كإحتفال بأعياد الميلاد و رأس السنة الجديدة يعني كلها كانت افكار بسيطة جدا و كل الشغل البرمجي المعقد بيتعمل علي السيرفر و يتبعت جاهز للصفحة لكن الموضوع ده في حد ذاته كان ثوري جدا ان يكون فيه لغة برمجة بتتحكم في عناصر الـ HTML و ده معناه أن ممكن يتعمل جزء من الشغل البرمجي علي الـ front end و بغض النظر عن حكاية حرب المتصفحات و مين أنتصر و إيه اللي حصل لأنه مش مجالنا , الفكرة أن دلوقتي بقي عندنا لغة برمجة تشتغل علي المتصفح و بدأت كل المتصفحات تعمل engine يشغل الجافاسكريبت و ده خللي أن سلوك الجافاسكريبت ميكونش واحد في كل مكان لأن ترجمة الجافاسكريبت تختلف من متصفح للتاني و دي اول حاجة غريبة ممكن تشوفها أنك تكون كاتب كود شغال كويس جدا علي متصفح و مش بنفس الطريقة علي متصفح تاني , حاجة كمان تانية ممكن تخللي الجافا سكريبت لغة غريبة علي اللي درسوا لغات برمجة قوية من عائلة الـ C مثلا أي حد راح للجافاسكريبت بعد دراسته للغات برمجة تانية هيحس أنها لغة عشوائية و مش منظمة او مرتبة و بيتعمل فيها حاجات غريبة الفكرة أن الجافاسكريبت لما أتعملت كان هدفها بسيط و انها تعمل شوية حاجات بسيطة و اتطورت مع الوقت علشان تواكب تطور مجال البرمجة و تطور الأجهزة و الشبكات و سرعة الإنترنت فبدأت تتطور واحدة واحدة بناء علي الأسس اللي أتعملت عليها أول ما طلعت فبدأ يظهر كأنه ترقيع بيتعمل علي حاجة مش أصلية أو مش متناسقة مع أساسيتها , يعني اللغة دي الظروف ساعدتها لأنها كانت اللغة الوحيدة اللي بتشتغل علي المتصفح (بعد ما ماسكروسوفت اتهزمت و تخلت عن لغتها للفرونت اند vb script ) و ده خلاها هي تقريبا الوحيدة اللي بتقوم بالدور (الإحصائيات بتقول أن تقريبا 98% من المواقع تقريبا بيكون فيها استخدام للجافاسكريبت) ده و بعد تطور التطبيقات و الأجهزة و المنصات المختلفة بقت الجافاسكريبت هي اللغة اللي بنستخدمها للمواقع و تطبيقات الموبايل و تطبيقات أنترنت الأشياء IOT و الروبوتات و الدرونات و و و و إلخ من إستخدامات الجافاسكريبت يعني حتي لو حسيت أن الجافاسكريبت لغة فيها حاجات غريبة المفروض تحترم رحلة كفاحها في التطور اللي عملته و لازم تتعلمها كويس علشان هتفيدك في أي مجال برمجي هتستخدمه حتي لو مكانتش اللغة الأساسية لشغلك هتحتاجها كلغة مساعدة
Why JavaScript is a Weird Language?
If you ever feel that JavaScript is a weird programming language with odd or illogical behaviors, this is not something strange or a flaw in you. In fact, JavaScript does have all these characteristics, but it's not the language's fault. JavaScript exhibits these behaviors due to its history, and understanding this will help clarify why JavaScript sometimes behaves strangely or illogically.
Let's go back to the beginning, during the browser wars of the 1990s. At that time, the internet was just beginning to spread, and the capabilities of websites were limited because internet speed was very slow, and device capabilities were weak. Microsoft was dominant in the software market, especially in operating systems, and wasn't initially interested in the internet and browsers.
However, as the internet started to gain popularity, and numerous websites emerged, realizing its significant value, Microsoft decided to create the Internet Explorer browser and integrate it into the Windows operating system. A fierce competition ensued between Internet Explorer and Netscape Navigator. In 1995, Netscape created something new: a programming language that could run directly on the browser itself – JavaScript. This language was designed to control the appearance of the website and its elements dynamically. For example, changing the color when hovering over an element or making the surrounding elements change their appearance.
At that time, this was revolutionary. Having a programming language that could control HTML elements directly on the front end, regardless of the server, was groundbreaking. Despite the browser war's outcome and what happened afterward, the idea remained, and we now have a programming language (JavaScript) that works on the browser, which brought both advantages and challenges.
One of the challenges is that JavaScript behavior may vary between different browsers because each browser has its JavaScript engine. This is one of the strange things you might notice – writing code that works perfectly on one browser may behave differently on another.
Another aspect that might make JavaScript seem strange is that it doesn't follow the structured and organized approach of some powerful languages from the C family. For someone who has studied powerful programming languages, switching to JavaScript might feel like moving to a random and disorganized language. However, it's essential to understand that JavaScript was initially intended for simple tasks. Over time, it evolved incrementally, resulting in a language that seems patched and not coherent with its original purpose.
In conclusion, JavaScript's quirks and odd behaviors are not the language's fault, but rather a consequence of its history. Despite this, JavaScript has evolved into a powerful and versatile language used in various programming areas. Even if it's not your primary language, learning it well is crucial because you might need it as a secondary language in many programming scenarios
January 26, 2024