আপনার নিজস্ব প্রোগ্রামিং ভাষা তৈরি করুন (আই)

প্রোগ্রামিং ভাষার বিবর্তন

প্রথম নিবন্ধ লেখার পরে কীভাবে আপনার নিজের অপারেটিং সিস্টেম তৈরি করবেনকেউ আমাকে বলেছেন যে আমি যদি একটি নিবন্ধ করতে পারি প্রোগ্রামিংয়ের ভাষা কীভাবে তৈরি করা যায়। প্রথমে আমি খুব একটা মনোযোগ দিই নি, তবে এখন এবং অন্যান্য উপায়ে প্রোগ্রামিং ল্যাঙ্গুয়েজ তৈরির বিষয়ে আমি আরও অনেক কিছু শিখেছি। সুতরাং আসুন একটি প্রাথমিক প্রোগ্রামিং ভাষা, অন্যান্য প্রোগ্রামগুলিতে সহজেই এম্বেডযোগ্য এবং এটি এমন একটি ভার্চুয়াল মেশিনের সাথেও কাজ করে যা আমরাও ডিজাইন করব। আজ আমাদের সবচেয়ে বেসিক ভার্চুয়াল মেশিন তৈরি করতে হবে।

আপনি সম্ভবত ভাবছেন: ভার্চুয়াল মেশিন? কিন্তু এটি কি খুব কঠিন নয় এবং এটি প্রোগ্রামগুলিও ধীর করে দেয়? " বিপরীতে, একটি সাধারণ ভার্চুয়াল মেশিন খুব সহজ এবং তুলনামূলক দ্রুত। আমি বেছে নিয়েছি জং ভার্চুয়াল মেশিনের ভাষা হিসাবে। কিন্তু এটা কী জং?

জং এটি একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ যা এক্সিকিউশন সুরক্ষায় ফোকাস করে, তাই এটি ব্যবহার করে কারও পক্ষে ভার্চুয়াল মেশিনটি বন্ধ করা কার্যত অসম্ভব হবে। এটি দ্বারা নির্মিত উন্নয়নের একটি সংকলিত ভাষা মোজিলা. servo, বিকল্প টিকটিকি সরীসৃপ, তার মধ্যে বিকাশ ঘটছে। আপনি এখনও আপনার সিনট্যাক্সটি পরিবর্তন করতে পারেন তবে আমি যে কোডটি ব্যবহার করতে চলেছি এটি প্রথম স্থিতিশীল প্রকাশের আগে পর্যন্ত রাখা হচ্ছে।

জং ইনস্টল ইন লিনাক্স সহজ উপায়ে। তবে কোনও অফিসিয়াল পার্সেল নেই। এর ব্যবহারকারীরা উবুন্টু আপনি এই দুটি যোগ করতে পারেন পিপিএ: পিপিএ: হ্যানসোরগ / মরিচা  y পিপিএ: সেমিআরএক্স 64 / কার্গো, ব্যবহারকারীরা খিলান ব্যবহার করতে পারেন অর (কার্গো-গিট প্যাকেজ যা সমস্ত কিছু ইনস্টল করে)। বাকিরা ব্যবহার করতে পারে:

curl -s https://static.rust-lang.org/rustup.sh | sudo sh

ভার্চুয়াল মেশিন কীভাবে কাজ করে?

যদি আপনি জানেন কীভাবে এসেম্বলার ওয়ার্ল্ড কাজ করে এটি স্ট্যাক বা স্ট্যাকের সাথে হুবহু একই। যদি তা না হয়, আমি আপনাকে এটি ব্যাখ্যা করব। আসুন নিম্নলিখিত কোডটি কল্পনা করুন:

মুদ্রণ 2 + 3

কম্পিউটার 2 + 3 এর অর্থ কী তা বুঝতে পারে না এবং কী আদেশ অনুসরণ করবে তা তাও জানে না। কম্পিউটারগুলি ব্যাটারি বা স্ট্যাকের সাথে কাজ করে যাতে ডেটা জমা হয় এবং অবিচ্ছিন্নভাবে আহরণ করা হয়। আমাদের ভার্চুয়াল মেশিনে থাকা কোডটির কিছু দেখতে পাওয়া উচিত:

পুশ 2 ​​পুশ 3 প্রিন্ট যোগ করুন

মূলত আমরা উপরের স্ট্যাকের উপর 2 রাখি, 3 এছাড়াও। ADD স্ট্যাকের শেষ 2 টি আইটেম টানবে (অর্থাত্ এটি স্ট্যাক থেকে সরিয়ে ফেলবে এবং এর মান পাবে) এবং ফলাফলটিকে স্ট্যাকের শীর্ষে যুক্ত করবে। PRINT স্ট্যাকের শেষ আইটেমটি নেবে এবং এটি আমাদের কাছে প্রদর্শন করতে ব্যবহার করবে। এখন যে এটি করা যাক জং.

আমাদের অবশ্যই প্রথমে একটি ভাষার সংজ্ঞা দিতে হবে বাইটকোড, আমরা বিদ্যমানটির মতো একটি ব্যবহার করতে পারি জাভা বা CLR নেট / মনো এর, তবে আমরা আরও একটি বেসিক তৈরি করতে চলেছি।

https://gist.github.com/a01de8904fd39a442c20

আমরা প্রতিটি নির্দেশের জন্য হেক্সাডেসিমাল স্বরলিপি ব্যবহার করি। উচ্চ উপর আমরা রেখেছি # [উপস্থাপন (প্রাইমেটাইভ থেকে)]এটি একটি বিশেষত্ব জং এবং এটি আমাদের পরবর্তীকালে সরাসরি বাইটগুলির সাথে অঙ্কের তুলনা করতে সক্ষম হতে সহায়তা করবে।

এখন আমাদের অবশ্যই এমন একটি ফাংশন তৈরি করতে হবে যা সেই নির্দেশাবলীর প্রতিটি কার্যকর করে। এর জন্য আমাদের অবশ্যই একটি বাইট পড়তে হবে এবং এটি গণনার ক্ষেত্রে আমাদের যে নির্দেশাবলী রয়েছে তা তার সাথে তুলনা করতে হবে। যদি আপনি বিদ্যমান বিদ্যমান দেখতে পান তবে আপনাকে অবশ্যই আপনার ক্রিয়াটি সম্পাদন করতে হবে।

https://gist.github.com/8950ce212a2de2f397f9

আমরা প্রতিটি বাইট পৃথকভাবে পড়তে এবং সেগুলি সম্পাদন করতে করি do

https://gist.github.com/12e24a1f0dd65e4cd65d

আপনি দেখতে পাচ্ছেন, আমরা পার্থক্য করতে পারি যদি আগে আমাদের পুশ কমান্ড (আমাদের INTEGER কমান্ড) দেওয়া হয়, পরবর্তী বাইটটি পুরোপুরি স্ট্যাকের কাছে নেওয়া হবে। সেখানে আমরা দুটি ফাংশন ব্যবহার করছি যা আমি আপনাকে শিখিয়েছি না, স্ব.পপ () y স্ব.পুষ্প (), যা অবশ্যই স্ট্যাক পরিচালনা করার দায়িত্বে রয়েছে।

https://gist.github.com/54147f853a8a2b8c01d9

এগুলি খুব জটিল নয়, তবে পপ ফাংশনে ত্রুটি সনাক্তকরণ প্রক্রিয়া রয়েছে। আসলে, ইন জং, যদি আমরা এই প্রক্রিয়াগুলি সরিয়ে ফেলি তবে এটি আমাদের সংকলন ত্রুটি দেয়। এখন আমাদের কেবল একটি প্রোগ্রামে কল করতে হবে পেরিন (আমাদের ভার্চুয়াল মেশিন) এবং একটি বাইকোড চালায়।

https://gist.github.com/99b1ab461318b3a644d0

এই বাইটকোডটি কোনও ফাইল থেকে পড়া যায়, তবে এখানে সরলতার জন্য আমি এটি একটি ভেরিয়েবলে সংরক্ষণ করেছি। যদি আমরা এটি কার্যকর করি তবে এটি আমাদের প্রত্যাশিত ফলাফল দেবে:

পেরিন v0.1 পেরিন ভিএম পেরিনভিএম উদাহরণ শুরু পেরিনভিএম v0.1.0 পূর্ণসংখ্যা মান 5

সমস্ত কোড এ উপলব্ধ GitHub অধীন অ্যাপাচি লাইসেন্স ২.০: https://github.com/AdrianArroyoCalle/perin। সংকলন করতে তাদের অবশ্যই থাকতে হবে জাহাজী মাল ইনস্টল এবং করা:

চার্জ বিল্ড && ./target/main

পরবর্তী অধ্যায়ে আমরা আমাদের প্রোগ্রামিং ভাষা সম্পর্কে আরও দেখতে পাব।


আপনার মন্তব্য দিন

আপনার ইমেল ঠিকানা প্রকাশিত হবে না। প্রয়োজনীয় ক্ষেত্রগুলি দিয়ে চিহ্নিত করা *

*

*

  1. ডেটার জন্য দায়বদ্ধ: মিগুয়েল অ্যাঞ্জেল গাটান
  2. ডেটার উদ্দেশ্য: নিয়ন্ত্রণ স্প্যাম, মন্তব্য পরিচালনা।
  3. আইনীকরণ: আপনার সম্মতি
  4. তথ্য যোগাযোগ: ডেটা আইনি বাধ্যবাধকতা ব্যতীত তৃতীয় পক্ষের কাছে জানানো হবে না।
  5. ডেটা স্টোরেজ: ওসেন্টাস নেটওয়ার্কস (ইইউ) দ্বারা হোস্ট করা ডেটাবেস
  6. অধিকার: যে কোনও সময় আপনি আপনার তথ্য সীমাবদ্ধ করতে, পুনরুদ্ধার করতে এবং মুছতে পারেন।

  1.   রোডার তিনি বলেন

    আকর্ষণীয় কৌতূহল, যদিও এটি বাস্তবে খুব কার্যকর নয় তবে এটি জানার ক্ষতি করে না।

    এটি দুর্দান্ত যে আপনি মরিচের বিজ্ঞাপন দিয়েছেন, এটি এমন একটি ভাষা যা প্রচুর প্রতিশ্রুতি দেয়, এটি কেবল সি +++ এর চেয়ে বেশি সুরক্ষিত নয়, তবে (এখনকার জন্য) এর বাক্য গঠনতে আরও পরিষ্কার।

    ছবির হিসাবে, আমি জাভা বিবর্তন এক্সডি বিবেচনা করব না।

    1.    রোডার তিনি বলেন

      এবং কেলান থেকে, আমি কখনই এটি ব্যবহার করি নি, তবে আমি এটি সম্পর্কে খুব ভাল কিছু শুনিনি ...

      1.    কুখ্যাত তিনি বলেন

        আমি করি, এবং এটি ইঞ্জিনিয়ারিংয়ে বিশেষত দরকারী যদিও পাইথন স্থল লাভ করছে।

      2.    জুয়ান তিনি বলেন

        ফোর্টরান সম্ভবত সি সহ অন্যান্য দুর্দান্ত ভাষা এখনও এখনও সত্যিকারের সমালোচনামূলক প্রশ্নগুলির মধ্যে একটি বা অন্য হবে।

        এবং এটি বিতর্কযোগ্য হবে যে ফোর্টরান সি এর একটি 'বিবর্তন' হিসাবে রয়েছে, যখন সম্ভবত এটি অন্যভাবে হওয়া উচিত, কারণ সি আরও নতুন, আধুনিক এবং আরও সম্ভাবনাযুক্ত; যদিও একজন একে অপরের থেকে বিচ্ছিন্ন না হয়।

        যদিও চূড়ান্ত অবস্থানগুলি কিছু দৃষ্টিকোণ থেকে সমস্ত বিতর্কযোগ্য।

    2.    ফ্রান্সিসকো তিনি বলেন

      জাভাতে +1

  2.   পোর্টোরো তিনি বলেন

    আসুন দেখুন আমি এটি পছন্দ করি কিনা, আমি প্রোগ্রামিংয়ে কিছু দিচ্ছি তবে আরও বেশি বুঝতে পারছি কিনা তা দেখার জন্য প্রাথমিক।

  3.   usergnulinux তিনি বলেন

    নতুন প্রোগ্রামিং ল্যাঙ্গুয়েজ তৈরির আসল উদ্দেশ্য কী? ব্যক্তিগতভাবে আমার কাছে মনে হয় এটি উত্স কোডটি আড়াল করা একটি চালাকি।

  4.   ইয়েলি তিনি বলেন

    বন্ধু, "আপনার নিজের অপারেটিং সিস্টেম" এর ধারাবাহিকতায় কী ঘটল? এটি সেখানে রাখবেন না দয়া করে এটি চালিয়ে যান।

    আসলে, আপনি একজন মাস্টার এবং কেবলমাত্র এই দুটি গান আমার মনোযোগ পুরোপুরি মুগ্ধ করেছে, তবে আমি চাই না যে সেগুলি অর্ধেক থাকুক।

    আমি জানি যে আমাদের মধ্যে অনেকে একই ধারণা করে এবং আমরা এই খুব আকর্ষণীয় বিষয়ের ধারাবাহিকতা এবং উপসংহারের জন্য অপেক্ষা করছি।

  5.   ক্রিস্টিয়ান ডেভিড তিনি বলেন

    খুব আকর্ষণীয়, আপনাকে অনেক ধন্যবাদ। 🙂

  6.   অকপট তিনি বলেন

    আমি জাভা কে প্রোগ্রামিং ভাষা হিসাবে বিবেচনা করি না, বরং একটি কমান্ড দোভাষী হিসাবে বিবেচনা করি, কারণ এটি সংকলনযোগ্য নয়

    1.    মারিও তিনি বলেন

      [একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ একটি প্রথাগত ভাষা যা প্রসেস প্রকাশের জন্য ডিজাইন করা হয়েছে যা কম্পিউটারের মতো মেশিন দ্বারা চালিত হতে পারে]]

      এই কারণে জাভা একটি প্রোগ্রামিং ভাষা। এমনকি বাশ ভাষা (লিনাক্স শেল ভাষা) নিজেই একটি প্রোগ্রামিং ভাষা।

      দুটি ধরণের ভাষা রয়েছে:
      - সংকলিত
      - ব্যাখ্যা করা
      - মিশ্র (ভার্চুয়াল মেশিনগুলি, নেটিভ গ্রন্থাগারগুলি সংকলিত হয় এবং কার্যকরী কোডটি ব্যাখ্যা করা হয়)

      দোভাষীরা খুব কার্যকর যখন এটি মাল্টিপ্লাটফর্মের ক্ষেত্রে আসে এবং এর জন্য একটি বিপর্যয়কর পরিবেশনা নেই have জাভা, ভিবি.এনইটি, সি ++। নেট, এফ #, সি # সমস্ত মিশ্র ভাষা। বাশ ভাষা, ব্যাট, পিএইচপি, জাভাস্ক্রিপ্ট এবং আরও অনেকগুলি ব্যাখ্যা করা ভাষা।

      যদি আপনি জাভাটিকে কোনও ভাষা হিসাবে বিবেচনা না করেন কারণ এটি ব্যাখ্যা করা হয়েছে (যা এটি নয়) তবে আপনাকে প্রোগ্রাম তৈরি করতে ব্যবহৃত অন্যান্য অনেকগুলি ভাষা বিবেচনা করা উচিত নয়। তদুপরি, তিনটি বিধি দ্বারা আপনার বিবেচনা করা উচিত নয় যে মেশিনের ভাষা ছাড়া কোনও প্রোগ্রামিং ভাষা রয়েছে itself

      এবং কেন নয়? এমনকি মেশিনের ভাষাও একটি ভাষা হিসাবে বিবেচনা করা যাবে না কারণ এটি প্রকৃতপক্ষে কেবলমাত্র প্রসেসরের দ্বারা "ব্যাখ্যা করা" কমান্ডের একটি সেট।

      কারণ কার্যকরভাবে, সমস্ত ভাষা কোনও কমান্ডার সেট ছাড়া কিছু নয় যা প্রসেসরের দ্বারা ব্যাখ্যা করা হয়।

      আপনি কম বেশি ভাষা পছন্দ করতে পারেন (জাভা, এক্ষেত্রে), কম-বেশি দরকারী এবং শক্তিশালী বলে মনে হয় তবে এটি যে কোনও প্রোগ্রামিং ভাষা নয় কারণ এটি সংকলিত হয় না ... এটি সমস্ত প্রোগ্রামিং ভাষার সংজ্ঞাগুলির বিরুদ্ধে যায়।

    2.    মারিও তিনি বলেন

      😐 আমি আশা করি আমার খুব খারাপ লাগবে না

      1.    মারিয়া অ্যান্টোনিটিয়া ডি ম্যানুয়েলা কার্ডেনাস তিনি বলেন

        নিঃশব্দ তুমিই আমাদের জীবনকে ধ্বংস করেছ

      2.    মারিও তিনি বলেন

        হাহাহাহাহা, পারদূুন এটা আমার উদ্দেশ্য এক্সডি ছিল না

    3.    কার্লোস তিনি বলেন

      জাভা একটি প্রোগ্রামিং ভাষা। কারণ আপনি একটি অ্যাপ্লিকেশন বিকাশ করতে পারেন এবং যখন আপনি সংকলন করেন আপনি একটি জার তৈরি করেন যা জেভিএম দ্বারা ব্যাখ্যা করা হয় Then

  7.   ইলিয়াস মঙ্গেলোস তিনি বলেন

    খুব ভাল তথ্য

  8.   কার্লোস আর্টুরো তিনি বলেন

    ভাল তথ্য তবে আমার সন্দেহ আছে, অন্যান্য সাদৃশ্য বা সফ্টওয়্যারের উপর নির্ভর না করে স্ক্র্যাচ থেকে একটি নতুন প্রোগ্রামিং ভাষা তৈরি করা সম্ভব হবে create আমি অন্য ভাষা জাভা বা এইচটিএমএলের মতো তৈরি হয়েছিল ঠিক তেমনই কথা বলি।
    আমি এই প্রশ্নের আপনার সাহায্যের প্রশংসা করব।