home.social

#programming_languages — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #programming_languages, aggregated by home.social.

  1. Я написал язык программирования на C — и он работает в Termux

    Kite lang Я написал язык программирования на C — и он работает в Termux Почему вообще Всё началось с мечты — написать свой собственный язык программирования. Я смотрел кучу роликов на YouTube, пытался что-то понять, но эти жалкие попытки ни к чему не приводили. В теории я знал как устроен интерпретатор — лексер, парсер, AST. Но как воплотить это в реальный код — не понимал совсем. Потом я наткнулся на один ролик который дал мне надежду. Я вспомнил что DeepSeek неплохо пишет код и решил попробовать — первый Python проект заработал. Я был на седьмом небе от счастья. Но тот проект был сырой и недоделанный. А когда пытаешься сделать на нём что-то серьёзное — DeepSeek выдавал код полный ошибок. Я фиксил один баг, появлялись три новых. Стало ясно что просто просить AI написать язык — не работает. Однажды я снова сидел на YouTube и наткнулся на видео с канала WeaklyHow — он создавал свой язык программирования с помощью нейросетей. Видео было на английском, но я смотрел просто так — контекст был понятен и без перевода.

    habr.com/ru/articles/1015304/

    #android #comiler #c #programming_languages

  2. نرحّب بمن انضمّ إلينا أخيراً في خادوم المحترف العربي.
    هنا يمكنك إرسال توتات تشمل 6000 حرفاً، فاكتب ما تشاء بدون أن تحمل همّ عدد الأحرف!!
    #ArabiPro #Technology #News
    #programming_languages #Programming #python #javascript #php #coding
    #Operating_systems
    #Linux #windows #mac #unix #android #sailfish_os #harmony_os #apple
    #social_media #mastodon #fediverse #friendica
    #games #xbox #playstation #steam
    #egypt #saudia_arabia #tunisia #politics

  3. نرحّب بمن انضمّ إلينا أخيراً في خادوم المحترف العربي.
    هنا يمكنك إرسال توتات تشمل 6000 حرفاً، فاكتب ما تشاء بدون أن تحمل همّ عدد الأحرف!!
    #ArabiPro #Technology #News
    #programming_languages #Programming #python #javascript #php #coding
    #Operating_systems
    #Linux #windows #mac #unix #android #sailfish_os #harmony_os #apple
    #social_media #mastodon #fediverse #friendica
    #games #xbox #playstation #steam
    #egypt #saudia_arabia #tunisia #politics

  4. نرحّب بمن انضمّ إلينا أخيراً في خادوم المحترف العربي.
    هنا يمكنك إرسال توتات تشمل 6000 حرفاً، فاكتب ما تشاء بدون أن تحمل همّ عدد الأحرف!!
    #ArabiPro #Technology #News
    #programming_languages #Programming #python #javascript #php #coding
    #Operating_systems
    #Linux #windows #mac #unix #android #sailfish_os #harmony_os #apple
    #social_media #mastodon #fediverse #friendica
    #games #xbox #playstation #steam
    #egypt #saudia_arabia #tunisia #politics

  5. نرحّب بمن انضمّ إلينا أخيراً في خادوم المحترف العربي.
    هنا يمكنك إرسال توتات تشمل 6000 حرفاً، فاكتب ما تشاء بدون أن تحمل همّ عدد الأحرف!!
    #ArabiPro #Technology #News
    #programming_languages #Programming #python #javascript #php #coding
    #Operating_systems
    #Linux #windows #mac #unix #android #sailfish_os #harmony_os #apple
    #social_media #mastodon #fediverse #friendica
    #games #xbox #playstation #steam
    #egypt #saudia_arabia #tunisia #politics

  6. My pet programming language, #Rocket, now supports a simple "raise" statement by which you can raise exceptions.

    E.g.:
    ```
    raise StopIteration()
    ```

    The parenthesis can be omitted, too, in which case a new instance of the exception will be created with no parameters.

    So far, exceptions could only be thrown by built-in functionality such as integer division (e.g. `1 \\ 0`). To make exception properly accessible in user-written code, I had to replace some "language magic" to make stuff properly accessible in the code.

    #programming #programminglanguage #programming_languages #programminglanguages #RocketLang

  7. Card DOM на языке Argentum: мы дома

    Пятая статья в серии о DOM-подобных моделях данных в разных языках программирования. В предыдущих частях мы разобрали DOM-подобные структуры данных, оценили их поддержку в ряде языков с помощью бенчмарка CardDOM и сравнили их реализацию в JavaScript . и С++ , Rust и D-lang (а также упомянули Zig, Odin, Jai, Python, V, Cone и Pony). Эта растянутая на несколько публикаций серия показала, что современные языки удивительно плохо приспособлены для работы с документной объектной моделью — фундаментальной структурой данных современных высокоуровневых приложений. Посмотрим, как с этой задачей справляется Argentum — язык, для которого такие структуры данных являются нативными.

    habr.com/ru/articles/967770/

    #programming_languages #data_structures #структуры_данных #язык_программирования #сравнение

  8. CardDOM на Rust: через лайфтаймы и боль

    Четвертая статья в серии про DOM-подобные модели данных в различных языках программирования. В прошлых сериях мы рассмотрели DOM-подобные структуры данных, тест их поддержки в языках программирования с помощью бенчмарка CardDOM и сравнили их реализацию в JavaScript и С++ . Сегодня - Card DOM на Rust - великом и ужасном.

    habr.com/ru/articles/966304/

    #programming_languages #rust #data_model #язык_программирования #модель_данных

  9. CardDOM на Rust: через лайфтаймы и боль

    Четвертая статья в серии про DOM-подобные модели данных в различных языках программирования. В прошлых сериях мы рассмотрели DOM-подобные структуры данных, тест их поддержки в языках программирования с помощью бенчмарка CardDOM и сравнили их реализацию в JavaScript и С++ . Сегодня - Card DOM на Rust - великом и ужасном.

    habr.com/ru/articles/966304/

    #programming_languages #rust #data_model #язык_программирования #модель_данных

  10. CardDOM на Rust: через лайфтаймы и боль

    Четвертая статья в серии про DOM-подобные модели данных в различных языках программирования. В прошлых сериях мы рассмотрели DOM-подобные структуры данных, тест их поддержки в языках программирования с помощью бенчмарка CardDOM и сравнили их реализацию в JavaScript и С++ . Сегодня - Card DOM на Rust - великом и ужасном.

    habr.com/ru/articles/966304/

    #programming_languages #rust #data_model #язык_программирования #модель_данных

  11. CardDOM на Rust: через лайфтаймы и боль

    Четвертая статья в серии про DOM-подобные модели данных в различных языках программирования. В прошлых сериях мы рассмотрели DOM-подобные структуры данных, тест их поддержки в языках программирования с помощью бенчмарка CardDOM и сравнили их реализацию в JavaScript и С++ . Сегодня - Card DOM на Rust - великом и ужасном.

    habr.com/ru/articles/966304/

    #programming_languages #rust #data_model #язык_программирования #модель_данных

  12. [Перевод] Безопасность памяти для скептиков

    Если вам надоело слушать проповеди про «безопасность памяти» - эта большое эссе именно для вас, усталых скептиков. Эндрю Лилли Бринкер - ведущий инженер компании MITRE в области безопасности программного обеспечения - спокойно разбирает факты и доказывает: безопасность памяти - не прихоть и не религия Rust-евангелистов, а экономически оправданный шаг в сторону надёжного, дешёвого и безопасного софта. Rust, Java, Go и им подобные языки не делают программистов «лучше» - они просто предоставили ремни безопасности в сам процесс разработки. И, как в случае с автомобилями, это спасает тысячи «жизней» приложений.

    habr.com/ru/articles/965432/

    #memory_safety #programming_languages

  13. [Перевод] Безопасность памяти для скептиков

    Если вам надоело слушать проповеди про «безопасность памяти» - эта большое эссе именно для вас, усталых скептиков. Эндрю Лилли Бринкер - ведущий инженер компании MITRE в области безопасности программного обеспечения - спокойно разбирает факты и доказывает: безопасность памяти - не прихоть и не религия Rust-евангелистов, а экономически оправданный шаг в сторону надёжного, дешёвого и безопасного софта. Rust, Java, Go и им подобные языки не делают программистов «лучше» - они просто предоставили ремни безопасности в сам процесс разработки. И, как в случае с автомобилями, это спасает тысячи «жизней» приложений.

    habr.com/ru/articles/965432/

    #memory_safety #programming_languages

  14. [Перевод] Безопасность памяти для скептиков

    Если вам надоело слушать проповеди про «безопасность памяти» - эта большое эссе именно для вас, усталых скептиков. Эндрю Лилли Бринкер - ведущий инженер компании MITRE в области безопасности программного обеспечения - спокойно разбирает факты и доказывает: безопасность памяти - не прихоть и не религия Rust-евангелистов, а экономически оправданный шаг в сторону надёжного, дешёвого и безопасного софта. Rust, Java, Go и им подобные языки не делают программистов «лучше» - они просто предоставили ремни безопасности в сам процесс разработки. И, как в случае с автомобилями, это спасает тысячи «жизней» приложений.

    habr.com/ru/articles/965432/

    #memory_safety #programming_languages

  15. [Перевод] Безопасность памяти для скептиков

    Если вам надоело слушать проповеди про «безопасность памяти» - эта большое эссе именно для вас, усталых скептиков. Эндрю Лилли Бринкер - ведущий инженер компании MITRE в области безопасности программного обеспечения - спокойно разбирает факты и доказывает: безопасность памяти - не прихоть и не религия Rust-евангелистов, а экономически оправданный шаг в сторону надёжного, дешёвого и безопасного софта. Rust, Java, Go и им подобные языки не делают программистов «лучше» - они просто предоставили ремни безопасности в сам процесс разработки. И, как в случае с автомобилями, это спасает тысячи «жизней» приложений.

    habr.com/ru/articles/965432/

    #memory_safety #programming_languages

  16. Rust и приведение типов

    Присматриваемся к Расту, как возможному кандидату на реализацию задачи Card DOM . Рассматриваем, как он поддерживает полиморфные структуры данных, в частности, приведение типов между трейтами.

    habr.com/ru/articles/960608/

    #programming_languages #rust

  17. الدرس (9)
    🚀 عوامل بايثون: الأدوات التي تحرك الشيفرة (الجزء 2)

    1. عوامل المقارنة (Comparison Operators)
    تُستخدم هذه العوامل لإجراء مقارنة بين اثنين من مختلف القيم والفحص عن ارتباط معينٍ بينهما، فإذا كانت الارتباط متحقّقاً كان الناتج قيمة "True" وإلا كانت القيمة "False"، إذ تستخدم هذه العوامل لفحص التالي:
    " == " للتساوي، و" != " لعدم التساوي، و" > " للأكبر من، و" < " للأصغر، و" >= " للأكبر من أو التساوي، و" <= " للأصغر من أو التساوي.
    تذكير، إذا لاحظت حصول شقلبة في عوامل الأكبر والأصغر في هذا النصّ فإنّ السبب يرجع إلى طريقة تعامل الأنظمة الكمبيوترية مع العلامات عند مزجها مع اللغة العربية، وعليه فأنصحك باتّباع الأسلوب الذي كنّا نتبعه في مرحلة الابتدائي، وهي أنّ الزاوية الحادة في العلامة واقعة بجانب القيمة المفترض كونها الأصغر😅.

    #python
    #programming_languages
    #بايثون
    #لغات_برمجة

  18. Реализация DOM-подобных структур данных на C++

    Это третья статья в серии про DOM-подобные модели данных в различных языках программирования. Ранее мы рассмотрели что такое DOM-подобные структуры данных и как оценить их поддержку языках программирования и препарировали JavaScript . Сегодня мы проверим как с Card DOM справится С++.

    habr.com/ru/articles/957906/

    #programming_languages #benchmark #c++ #data_structures #языки_программирования #сравнение #структуры_данных

  19. TIL that when implementing a #programming language, I suspect many design decisions are made because they're less work to implement.

    Case in point: if everything is an object, like in Ruby, it's a *lot* more work than if things like integers and strings are just non-interactive data. Of course, this makes the interaction model more consistent. And you can do silly things like '5.type()', which is technically legal #Mifflin code.

    #programming_languages

  20. Continuing work on my Bad #Poetry as #Code language, #angstlang

    Yesterday I got the idea that that'd be really funny to be able to write test cases for this as poems. So, I can't handle arrays or strings yet, but we have assertions and a test framework.

    It also occurred to me that I should not "execute" these as programs. They're poetry, so you *recite* them.

    #software #programming_languages #coding #softwareDevelopment

  21. Как JavaScript справляется с DOM-подобными структурами данных

    Это вторая статья в серии о поддержке DOM-подобных моделей в различных языках программирования. Сегодня мы рассмотрим как JavaScript справляется с бенчмарком Card DOM.

    habr.com/ru/articles/956542/

    #programming_languages #benchmark #javascript #garbage_collector #data_structures

  22. Só pra confirmar que falei sério quando disse que estou estudando Java. Acabou de chegar meu mais novo brinquedinho!

    #Java #Programming #Programming_Languages

  23. الدرس (8)
    🚀 عوامل بايثون: الأدوات التي تحرك الشيفرة (الجزء 1)
    العوامل (Operators) في لغة بايثون هي رموز أو دوالّ تمثّل عمليات حسابية
    فهي اللبنات الأساسية التي تسمح لنا بتنفيذ الإجراءات على أنواع مختلفة من البيانات، سواء كانت أعداداً أو قيماً منطقية،
    وإليك الأنواع الأربعة الأولى من العوامل التي تحتاجها في برمجة بايثون:
    1. العوامل الحسابية (Arithmetic Operators)
    تُستخدم هذه العوامل لإجراء العمليات الرياضية على القيم العددية، وهي:
    " + " للجمع و " - " للطرح و " * " للضرب و " / " للقسمة وقد يكون الناتج كسراً
    و " = " لإسناد القيمة الموجودة على اليمين إلى المتغير الموجود على اليسار
    و " ** " لتكرار ضرب العدد الموجود على اليسار بعدد القيمة الموجودة على اليمين
    و " // " لحساب خارج القسمة أي أكبر عدد صحيح يقبل المقسوم القسمة عليه
    و " % " لحساب الباقي في القسمة ولا يكون إلا أقل من المقسوم عليه، أو قل هو بسط الكسر في العدد المركب الناتج عن القسمة
    كما توجد العوامل الأحادية (Unary Operators)، سميّت بالأحادية لأنها تحتاج عاملاً واحداً فقط، فالأولى وهي "+" وليس لها تأثير لا على القيم الموجبة ولا على السالبة، إذ إنّ ناتجها هو حاصل ضرب المتغير في موجب واحد. والثاتية وهي "–" وتعطيك قيمة حاصل ضرب المتغير في سالب واحد، فإن كانت قيمة المتغير سالبة ستصبح موجبة والعكس بالعكس.

    #python
    #programming_languages
    #بايثون
    #لغات_برمجة

  24. Настоящий тест для языков программирования — как они справляются с DOM-подобными структурами данных

    Большинство тестов языков программирования — это синтетика. Мы сравниваем скорость сортировки массивов, подсчёт аллокаций и другие упражнения, которые почти не встречаются в реальной жизни. А вот настоящие приложения — редакторы, движки, интерфейсы, базы данных — живут совсем в другом мире. Они управляют не числами, а сложными структурами объектов. И если присмотреться, почти все эти структуры сводятся к одной универсальной модели: DOM-подобному графу .

    habr.com/ru/articles/955158/

    #programming_languages #data_structures #benchmark

  25. الدرس (7)
    تحويل نوع المتغيّر
    تقدّم في الدرس (4) أن نوع المتغيّر قد يتحوّل أثناء تشغيل البرنامج وذلك تبعاً للقيمة التي يمثّلها، وهذا الأمر واضح في المثال التالي:
    x=5; y=2; x= x/y
    فإنّ المتغير "x" كان من نوع العدد الصحيح "int" ولكن بعد أن أعطيناه قيمة ناتج قسمته على 2 سيتحوّل نوعه ليصبح عدداً عشرياً "float". ولكن، هذا ليس كافياً في بعض الصور، لذا كانت الحاجة إلى وجود دوال لتحويل أنواع المتغيّرات بين بعضها البعض، وتسمى "دوال تحويل النوع".

    - دوال تحويل النوع (type conversion functions):
    هي دوال تُستخدم لتحويل البيانات بين الأنواع الأساسية (مثل int, float, str) والهياكل البيانية (مثل list, tuple, set, dict). وفيما يلي سنذكر هذه الدوال مع بعض التوصيات المهمّة في استخدامها، ويمكنك مشاهدة الصور المرفقة للتعرّف على جميع الصور الممكنة.
    الدوال المدمجة لتحويل الأنواع هي:
    دالة int(x): تحويل إلى عدد صحيح (integer)
    دالة float(x): تحويل إلى عدد عشري (float)
    دالة str(x): تحويل إلى نص (string)
    دالة bool(x): تحويل إلى قيمة منطقية (True/False)
    دالة list(x): تحويل إلى قائمة (list)
    دالة tuple(x): تحويل إلى مترابطة بيانية (tuple)
    دالة set(x): تحويل إلى مجموعة (set)
    دالة dict(x): تحويل إلى قاموس (dictionary)

    * توصيات لتجنب الأخطاء
    تحقق من صلاحية البيانات: تأكد أن النص يحتوي على أرقام صالحة قبل تحويله إلى int أو float.
    التكرار مطلوب: لتحويل إلى list، tuple، أو set، يجب أن يكون المدخل iterable (مثل قائمة، نص، ولا يمكن أن يكون int أو float مباشرة).
    المفاتيح في dict: يجب أن تكون المفاتيح غير قابلة للتغيير (مثل str، int، tuple).
    اقرأ رسائل الخطأ: إذا حصلت على ValueError (بيانات غير صالحة للتحويل) أو TypeError (نوع غير متوافق)، تحقق من نوع المدخل وصحته.

    * تذكّر!!!:
    ليست كل التحويلات ممكنة (مثل تحويل نص غير رقمي إلى int يسبب ValueError).
    التحويل يعتمد على محتوى البيانات (مثل تحويل "5.5" إلى float ممكن، لكن إلى int يتطلب تحويل وسيط).
    #python
    #programming_languages
    #بايثون
    #لغات_برمجة

  26. الدرس (6)
    أنواع المتغيرات في لغة بايثون - القسم الثاني:

    - القائمة (List):
    هي مجموعة مرتبة ومتغيرة (قابلة للتعديل) من العناصر. يمكن أن تحتوي على عناصر من أنواع مختلفة (مثل أرقام، نصوص، أو حتى قوائم أخرى). تُمثل بأقواس مربعة [ ].
    * خصائصها:
    **مرتبة: يمكن الوصول إلى العناصر مباشرة عبر فهرس (index) يبدأ من 0.
    **قابلة للتعديل: يمكن إضافة عناصر وحذفها وتغييرها.
    **تسمح بالتكرار: يمكن وجود عناصر مكررة.
    **غير مضمونة السرعة في عمليات البحث إذا كانت كبيرة.
    ويمكن أيضاً الاكتفاء بتعريف نوع القائمة وعدد عناصرها، ثم إضافة العناصر في مرحلة لاحقة:

    - المترابطة البيانية (Tuple):
    هي مجموعة مرتبة وغير متغيرة (لا يمكن تعديلها بعد الإنشاء). تشبه القائمة لكنها أكثر أمانًا للبيانات الثابتة. تُمثل بأقواس مستديرة ( ) أو بدون أقواس.
    * خصائصها:
    **مرتبة: يمكن الوصول إلى العناصر مباشرة عبر الفهرس.
    **غير قابلة للتعديل: لا يمكن تغيير، إضافة، أو حذف عناصر بعد الإنشاء.
    **تسمح بالتكرار: يمكن وجود عناصر مكررة.
    **أسرع قليلاً من القائمة في بعض العمليات بسبب الثبات.

    - المجموعة (Set):
    هي مجموعة غير مرتبة وغير مكررة من العناصر الفريدة. لا تحتوي على فهرس، وتُستخدم للعمليات الرياضية مثل التقاطع أو الفرق. تُمثل بأقواس متعرجة {} أو عبر دالة set.
    * خصائصها:
    **غير مرتبة: لا يمكن الوصول عبر فهرس (لا index).
    **قابلة للتعديل: يمكن إضافة أو حذف عناصر.
    **لا تسمح بالتكرار: العناصر المتشابهة تُحذف تلقائيًا.
    **سريعة في عمليات التحقق من الوجود (مثل "هل هذا العنصر موجود؟").

    - القاموس (Dictionary):
    هي مجموعة غير مرتبة تقليديًا (في بايثون 3.7 وما بعده، تحافظ على ترتيب الإدراج) من أزواج مفتاح-قيمة، حيث يكون كل مفتاح فريدًا ومرتبطًا بقيمة. تُمثل بأقواس متعرجة {}، وتُشبه قاموسًا حقيقيًا حيث "key" هو الكلمة و"value" هي التعريف.
    الخصائص الرئيسية:

    **مرتبة في 3.7+: الوصول يعتمد على المفتاح (key).
    **قابلة للتعديل: يمكن إضافة، حذف، أو تغيير أزواج "مفتاح-قيمة".
    **المفاتيح لا تتكرر: المفاتيح فريدة غير قابلة للتغيير (مثل str, int, tuple)، أما القيم يمكن تكرارها.
    **سريعة في البحث عبر المفتاح.
    #python
    #programming_languages
    #بايثون
    #لغات_برمجة

  27. الدرس (5)
    أنواع المتغيرات في لغة بايثون - القسم الأول:
    ذكرنا سابقاً أنّ بايثون لا يطلب من المبرمج تحديد نوع المتغير، بل يكفي عليه الالتزام بإسناد قيمة له، وسيقوم بايثون بتحديد النوع تلقائياً. كما أنّ المتغيرات في لغة بايثون هي كائنات (أي أنها معرفة بمكتبات ويمكن إجراء مجموعة من الدوال عليها)، وتنقسم إلى سبعة أقسام أساسية:

    - المتغيرات العددية (Numbers):
    وتشمل ثلاثة أنواع:
    الأعداد الصحيحة (int): x = 5
    الأعداد العشرية (float): y = 1.2
    الأعداد المركّبة (complex): z = 8J

    - المتغيرات النصية (Strings)
    يمكن تعريف المتغيرات النصية للقيم غير المشتملة على أسطر بطريقين:
    a = "five"
    b = 'name'
    أما المتغيرات النصية للقيم المشتملة على أسطر فيتم تعريفها بالطريقة التالية:
    c = """First Line.
    Second Line."""
    d = '''First Paragraph
    Second Paragraph'''
    لا يوجد أي مشكلة في استعمال نفس علامات التنصيص في نفس النص بشرط أن تكون مختلفة عن علامة التنصيص الأصلية (الخارجية) في النوع أو في العدد:
    e = 'This Text Contains "double quotations".'
    f = "This Text Contains 'single quotations'."

    - المتغيرات المنطقية (Logical):
    هذه المتغيرات تقبل إحدى قيمتين: (True) أو (False).
    is_odd = True
    is_even = False
    وفي الواقع القيمة (True) تساوي 1 و القيمة (False) تساوي 0 ، ويمكن استعمالهما بدلاً عنهما بل لعله يكون أفضل.
    is_odd = True
    if is_odd:
    print('This number is odd')
    else:
    print('This number is even')

    #python
    #programming_languages
    #بايثون
    #لغات_برمجة

  28. الدرس (4)
    إعلان المتغير وتعيين نوعه
    مقدّمة: المتغيرات ( variables ) عبارة عن أماكن يتم حجزها بشكل مؤقت في الذاكرة بهدف تخزين بيانات فيها أثناء تشغيل البرنامج. في لغة بايثون لا يطلب من المبرمج التصريح بنوع المتغيّر، بل يقوم المفسّر بذلك تلقائياً معتمداً على نوع القيمة التي يسندها المبرمج، ومن هنا يتّضح أنّ لغة بايثون لا تقبل أيّ متغيّر بدون إسناد قيمة له.
    يكفي في تعريف متغيّر جديد: اختيار اسمٍ له ثم إسناد قيمة له، كما هو مبيّن في المثالين التاليين:
    x = 12
    var = "Ali"
    في إسناد القيم النصية يمكنك استخدام رمز التنصيص الفردي 'النص' أو الزوجي "النص" و لا يوجد أي فارق بينهما. ولكنّ إذا أردت إسناد قيمة نصيّة مكوّنة من أكثر من سطر فيجب عليك استخدام علامة التنصيص الفردية أو الزوجية مكرّرة ثلاث مرات على كلا طرفي النص، هكذا: '''النص''' أو """النص"""

    تتيح لغة بايثون تعريف عدّة متغيرات في وقت واحد بإسناد قيمة لها على هذا النوع:
    a = b = c = 5
    من الواضح أنّ نوع المتغيّر في لغة بايثون ليس ثايتاً، بل سيتغيّر بحسب نوع القيمة المسندة إليه، لاحظ المثال التالي، وسنستخدم في الدالةالمخصصة للطباعة على الشاشة لتجربة ذلك عملياً، ولمعرفة نوع المتغير سنستخدم الدالة "()type":
    var = 8
    print('The Type of var is: ', type(var))
    var = 'Eight'
    print('The Type of var is: ', type(var))
    **الدالّة"()print" يقوم بطباعة المحتوى الموجود بين القوسين وإظهاره في الشاشة، إذا كان المحتوى المراد طباعته متعدّد النوع أو القيمة يجب الفصل بين كلّ منها بعلامة "," وإذا أردنا طباعة عبارة نصيّة كما هي فإننا نضعها بين إحدى علامات التنصيص المذكورة سابقاً.

    #python
    #programming_languages
    #بايثون
    #لغات_برمجة

  29. الدرس (3)
    أساسيات كتابة الكود
    تعتمد كتابة أكواد لغات البرمجة على أساسيات يؤدّي تجاهلها إلى وقوع أخطاء في الصياغة (Syntax Error) التي تظهر في زمان ترجمة الكود المصدري (Source Code) وتحويله إلى كود الآلة (Machine Code)، ولذا فإنّ إجادة لغة ما يعتمد في الخطوة الأولى على التعرف على هذه الأساسيات والعمل على مراعاتها بحذافيرها. نعم، هناك أيضاً توصيات اختيارية غير إلزامية يأتي الحثّ على مراعاتها في إطار تحسين مقروئية الكود المصدري، وعدم مراعاة التوصيات لا يؤدّي إلى وقوع أخطاء صياغية.
    ههنا سنذكر الأكثر أهمية من بين الأساسيات:
    1- لغة بايثون تطبّق حساسية الأحرف (Case Sensitivity)، وهذا يعني أنّ كلمة average تختلف عن كلمة Average
    2- تعتمد لغة بايثون على مبدأ التثليم (Indents) "أي وضع مسافة بادئة في أول السطر" وتستعملها في تعيين البلوكات البرمجية، لذا انتبه لاستعمالك (Tab) في بداية السطور.
    3- لا نحتاج إلى ":" في آخر الأمر، ولكن إذا أردنا كتابة أكثر من أمر في سطر واحد وجب إفهام مفسّر لغة بايثون (Python Interpreter) ذلك بالفصل بينها بعلامة ":" بهذا الشكل: x = 1; y = 2; z = 3
    4- إذا أردت أن تقسّم أمراً برمجياً وكتابته في أكثر من سطر، يجب عليك إدراج علامة "\" بين أجزائه عند نهاية كل سطر. ولكن يمكن تجاوز هذه القاعدة إذا كان الأمر البرمجي مما يشتمل على الرموز المزدوجة مثل: [] أو () أو {}.
    total = item_1 + \
    item_2 + \
    item_3
    5- لكل لغة برمجة طريقتها في إعلان المتغيرات، وقد سهّلت بايثون الأمر بعدم اشتراطها تعيين نوع المتغير حين إعلانه، ولكن يظلّ من الواجب أن يتمّ التصريح بالإعلان عن المتغير ولو بإعطائه قيمة قبل استعماله في البرنامج. فمثلاً الأوامر التالية صحيحة:
    x=5
    y=7
    z=x+y
    إذ إعلنت عن x وy بإعطائها قيم صريحة، وأما z فقد أعلنت عنه بإعطائه قيمة مستنبطة وهي ناتج الجمع.
    7- تستخدم كل لغة برمجة مجموعة من الكلمات، فلا يُسمح باستخدامها كأسماء للمتغيّرات، وهذه الكلمات في لغة بايثون هي:
    and, assert, break, class, continue, def, del, elif, else, except, exec, False, finally, for, from, global, if, import, in, is, lambda, None, nonlocal, not, or, pass, print, raise, return, True, try, while, with, yield.

    #بايثون #لغات_برمجة #python #programming_languages

  30. الدرس (2)
    مصطلحات برمجية
    بما أنّ هدفنا هو تعليم بايثون بإسلوب يناسب غالبية القرّاء، كان من الواجب تناول بيان بعض المصطلحات الأساسية في البرمجة. تذكّر لا يوجد حوجة لحفظ هذه المصطلحات ومعانيها بدقّة بل يكفي فهمها. فهلموا لنبدأ:

    • الكود المصدري (Source Code): هو الكود الذي يكتبه المبرمج بلغة برمجية مثل بايثون، وهو قابل للقراءة من قبل البشر. على سبيل المثال، سطر مثل print("Hello World")
    • كود الآلي (Machine Code): هو الشكل الثنائي (0 و1) الذي يفهمه الحاسوب مباشرة لتنفيذ البرنامج. لا يمكن قراءته بسهولة، ويتم انتاجه من source code عبر مترجم أو مفسر.
    • خطأ في الصيغة (Syntax Error): خطأ يحدث عندما لا يتبع الكود قواعد اللغة البرمجية، مثل نسيان علامة اقتباس أو عدم إغلاق قوس أو عدم مراعاة أساسيات كتابة الكود. والغالب في لغات البرمجة لا سيما بايثون أنّها ستعطيك رسالة خطأ واضحة لمساعدتك في التصحيح.
    • المترجم (Compiler): برنامج يحول الكود المصدري إلى كود آلي دفعة واحدة قبل الشروع في تشغيله (وهو مستخدم في بعض اللغات مثل C++) ومن مميّزاته أنّه يزيد من سرعة البرنامج، لكنه أقلّ مرونة في عملية الإصلاح والتصحيح.
    • المفسر (Interpreter): برنامج يقرأ الكود المصدري سطراً بسطر ويترجمه أثناء التشغيل. وتعتمد لغة بايثون على مفسر، مما يجعله سريع التجربة للمبتدئين، لكنه أبطأ قليلاً في المشاريع الكبيرة.
    • المتغير (Variable): مكان لتخزين البيانات، مثل x = 5 و y = “Hello”
    • نوع البيانات (Data Type): يقصد بها نوع القيمة التي سنضعها داخل المتغير، [مرفق صورة لتوضيحها بالأمثلة]

    #لغات_برمجة
    #بايثون
    #python
    #programming_languages

  31. الدرس (1)
    إعداد بيئة التعلّم
    لغة بايثون حالها حال جميع اللغات، تحتاج إلى بيئة تشغيل (SDK) إضافة إلى أي محرّر نصوص بحسب ما تفضّله -حيث يمكنك استخدام NotePad- والأفضل أن تستخدم بيئة تطوير متكاملة (IDE) لأننا نريد في المستقبل القريب استخدام لغة بايثون باحتراف.

    لتنزيل بيئة التشغيل (SDK)، اذهب إلى الرابط أدناه ثمّ اضغط على الزر الأصفر (Download Python 3.13.7) فهي آخر نسخة مستقرّة عند كتابة هذا النصّ:
    python.org/downloads/
    سيتم تنزيل النسخة المتوافقة مع نظام التشغيل المثبّت على جهازك، ويمكنك اختيار نظام التشغيل يدوياً.

    أمّا بخصوص بيئة التطوير (IDE) فيوجد العديد من الخيارات، ولكنّني أفضّل كمبتدئ أن استخدم أحد اثنين:
    - Thonny: قم بتنزيله بالضغط على اسم نظام تشغيل جهازك من الرابط التالي [صورة مرفقة]
    thonny.org/

    - VS Code أو أحد انشعاباته:
    إنّ (VS Code) هو بيئة تطوير احترافية ومتكاملة من ناحية دعم لغات البرمجة، ولها العديد من المميزات من أهمّها دعمها للإضافات (Extensions) التي تجعلها قابلة للتوسعة بشكل رهيب، وهو مفتوح المصدر مقدّم من شركة ويندوز (الشبابيك المكسّرة)، ولكن هناك العديد من الانشعابات الأصلية منها حيث تمّ فيها حذف تتبّعات شركة مايكروسوفت منها، وأنا أفضل استخدام كوديوم (VS Codium)، يمكنك أن تنزله من الرباط التالي، وبعد تنزيله وتثبيته اختر بالماوس (Extensions) من القائمة العمودية على يدك اليسار أو اضغط على (CTRL+Shift+X) من لوحة المفاتيح وقم بثبيت (Python) و(Python Debugger) [صورة مرفقة].
    لتنزيل (VS Codium) اضغط على الرابط التالي ثم اختر النسخة المتوافقة مع نظام تشغيل جهازك:
    github.com/VSCodium/vscodium/r

    وهكذا نكون قد انتهينا من تجهيز كل الإعدادات التي نحتاجها لكتابة برامج بلغة بايثون، وإذا واجهك أي سؤال فلا تتردّد في طرحه.

    #python #programming_languages #لغات_برمجة #بايثون
    #Thonny #VS_Codium

  32. مقدمة عن لغة بايثون:
    تُعتبر لغة بايثون واحدة من أكثر اللغات شهرة و انتشاراً، فمنذ إطلاقها في عام 1991 على يد Guido van Rossum، أصبحت بايثون لغة يفضلها المبتدئون والمحترفون على حد سواء، وذلك لما اتّسمت به من بساطة وقوة في ذات الوقت.
    فمن أبرز ميزات بايثون أنها تشبه اللغة الإنجليزية العادية تقريبًا، مما يجعل قراءتها وكتابتها سهلة للغاية.
    فمثلا:
    print("Hello World!")
    هو الأمر الذي سيطبع لك عبارة
    "Hello World!"
    على الشاشة، وهذا أمر بيّن حتى وإن لم تتقن البرمجة!

    تتعدّد استخدامات لغة بايثون، فعلى سبيل المثال تستخدم بايثون في:

    تطوير تطبيقات سطح المكتب
    Desktop Apps.
    تطوير المواقع
    Web Development.
    تحليل البيانات والذكاء الاصطناعي
    AI & Data Science.
    أتمتة المهام المتكررة
    Automation.

    ومن هنا يتّضح أنّ استخدامها ليس محصوراً في مجال واحد.

    #python #programming_languages #بايثون #لغات_برمجة

  33. Параллелизм в Go тестах: все, что нужно знать о -p, -parallel и t.Parallel()

    В Go есть три способа управления параллельностью тестов: Короткий гайд о -p , -parallel и t.Parallel а также бонус для любителей параллельного программирования

    habr.com/ru/articles/882222/

    #go #golang #testing #concurrency #parallelism #neva #nevalang #programming_languages #visual_programming #compiler

  34. Параллелизм в Go тестах: все, что нужно знать о -p, -parallel и t.Parallel()

    В Go есть три способа управления параллельностью тестов: Короткий гайд о -p , -parallel и t.Parallel а также бонус для любителей параллельного программирования

    habr.com/ru/articles/882222/

    #go #golang #testing #concurrency #parallelism #neva #nevalang #programming_languages #visual_programming #compiler

  35. Параллелизм в Go тестах: все, что нужно знать о -p, -parallel и t.Parallel()

    В Go есть три способа управления параллельностью тестов: Короткий гайд о -p , -parallel и t.Parallel а также бонус для любителей параллельного программирования

    habr.com/ru/articles/882222/

    #go #golang #testing #concurrency #parallelism #neva #nevalang #programming_languages #visual_programming #compiler

  36. Параллелизм в Go тестах: все, что нужно знать о -p, -parallel и t.Parallel()

    В Go есть три способа управления параллельностью тестов: Короткий гайд о -p , -parallel и t.Parallel а также бонус для любителей параллельного программирования

    habr.com/ru/articles/882222/

    #go #golang #testing #concurrency #parallelism #neva #nevalang #programming_languages #visual_programming #compiler

  37. I just finished reading the paper “Borrow checking Hylo”
    2023.splashcon.org/details/iwa

    If they make serious progress with #Hylo and can uphold their claims, I believe Hylo is going to be one of the few serious contenders to #rustlang in terms of memory safety. They solve the same problems, but Hylo does it in a simpler, more explicit framework (let, set, inout, sink) based on Value Semantics.

    But the #rustlang ecosystem makes huge progress and #Hylo does not even provide pre-built binaries because of its early stage of development. So it is unlikely at this stage.

    Remark: I did not determine how #Hylo represents interior mutability, but this should be doable.

    #programming_languages #programming