জুলিয়া একটি উচ্চ পর্যায়ের প্রোগ্রামিং ভাষা, যা উচ্চ দক্ষতা সম্পন্ন এবং গতিশীল হিসেবে গণ্য করা হচ্ছে। এটি জেনারেল পারপাস ল্যাঙ্গুয়েজ বা সর্ব ক্ষেত্রে ব্যাবহার্য প্রোগ্রামিং ভাষা হলেও গাণিতিক বিশ্লেষণ এবং গাণিতিক বিজ্ঞানে বিশেষভাবে ব্যাবহার করা হয়।
[১২][১৩][১৪][১৫]
জুলিয়ার মূল বৈশিষ্ট হল প্যারাম্যাট্রিক পলিমর্ফিজম[note ১] এবং ডাইনামিক প্রোগ্রামিং,[note ২] যার ভিত্তি হল মাল্টিপল ডিস্প্যাচ।[note ৩]
ডিফল্টভাবে, জুলিয়া স্ক্রিপ্টিং ভাষার[note ৪] মতো রানটাইম ব্যবহার করে চালানো হয় এবং এটি ইন্টার্যাকশন বা REPL (Read-Eval-Print Loop) সমর্থন করে,[১৬] তবে জুলিয়া প্রোগ্রাম বা সোর্স কোড ব্যবহারকারীদের কাছে একটি প্রস্তুত ইনস্টল/রান ফাইলে পাঠানো সম্ভব, যা দ্রুত তৈরি করা যায় এবং কোন পূর্বে ইনস্টলেশন প্রয়োজন হয় না।[১৭] জুলিয়া প্রোগ্রামগুলো (আলাদাভাবে) বাইনারি এক্সিকিউটেবল ফাইলেও কম্পাইল করা যায়, যা সোর্স কোড সরবরাহ না করেই বিতরণ করার অনুমতি দেয়, এবং জুলিয়া ১.১২-এর সাথে এই এক্সিকিউটেবল ফাইলগুলো আরও ছোট আকারে পাওয়া যায়। গতি বাড়ানোর জন্য এমন কম্পাইলেশন প্রয়োজন হয় না, যদিও এটি কনস্ট্যান্ট-ফ্যাক্টর স্টার্টআপ খরচ কমাতে পারে, কারণ জুলিয়া ইন্টারঅ্যাকটিভলি চালানোর সময়ও কম্পাইল করা হয়, তবে এটি সোর্স কোড লুকানোর জন্য সহায়ক হতে পারে। ভাষার বৈশিষ্ট্যগুলো আলাদাভাবে কম্পাইল করা যায়, ফলে জুলিয়া রানটাইম সহ বা রানটাইম ছাড়াই (যা ছোট এক্সিকিউটেবল এবং লাইব্রেরির জন্য অনুমতি দেয় তবে ক্ষমতা সীমিত করে) ব্যবহার করা যায়।
জুলিয়া প্রোগ্রামগুলো অন্যান্য ভাষার লাইব্রেরি পুনঃব্যবহার করতে পারে, যেমন সি বা রাস্ট লাইব্রেরি কল করা, এবং জুলিয়া লাইব্রেরিগুলো অন্য ভাষা থেকেও কল করা যেতে পারে, যেমন পাইথন এবং আর, এবং বেশ কয়েকটি জুলিয়া প্যাকেজ এই ভাষাগুলো থেকে সহজে অ্যাক্সেসযোগ্য করা হয়েছে, যেগুলো সংশ্লিষ্ট জুলিয়া প্যাকেজের পাইথন ও আর লাইব্রেরি হিসেবে পাওয়া যায়। উভয় দিকেই কলিং সুবিধাটি অনেক ভাষার জন্য বাস্তবায়িত হয়েছে, যেমন এই সবগুলো ভাষার জন্য।
জুলিয়ার ভিজুয়াল স্টুডিও কোড এক্সটেনশনটি একটি পূর্ণাঙ্গ IDE (Integrated Development Environment) সরবরাহ করে যা ডিবাগিং, লিন্টিং, এবং প্রোফাইলিং সমর্থন করে।[১৮][১৯][২০][২১]
কোডিং এর উদাহারণ
জুলিয়া প্রোগ্রামিং ভাষার কোডিং এর উদাহারণ:
year=2007;ifyear>=2006println("অনিকেত প্রান্তর আর্টসেলের সবচেয়ে জোস গান")elseprintln("ভুল জন্ম আর্টসেলের সবচেয়ে জোস গান")end
আউটপুট:
julia>অনিকেতপ্রান্তরআর্টসেলেরসবচেয়েজোসগান
ইতিহাস
জুলিয়ার উপর কাজ শুরু হয় ২০০৯ সালে, যখন জেফ বেজানসন, স্টেফান কারপিনস্কি, বিরাল বি. শাহ, এবং অ্যালান এডেলম্যান একটি ফ্রি ভাষা তৈরি করার উদ্যোগ নেন যা উচ্চ স্তরের এবং দ্রুতগতি সম্পন্ন হবে। ১৪ ফেব্রুয়ারি ২০১২ সালে, দলটি একটি ওয়েবসাইট চালু করে যেখানে ভাষার লক্ষ্য সম্পর্কে একটি ব্লগ পোস্ট ছিল। ২০১২ সালের এপ্রিল মাসে InfoWorld-এর সাথে একটি সাক্ষাৎকারে, কারপিনস্কি নাম "জুলিয়া" সম্পর্কে বলেন: "এটির আসলে কোনও বিশেষ কারণ নেই। এটি শুধু সুন্দর একটি নাম মনে হয়েছিল।"[১৪] বেজানসন জানান যে তিনি বন্ধুর পরামর্শে নামটি বেছে নিয়েছিলেন,[২২] এবং পরে তিনি লিখেছিলেন:
হয়তো জুলিয়া মানে "জেফ-এর আনকমন লিস্প যা স্বয়ংক্রিয়"?[২৩]
জুলিয়ার সিনট্যাক্স এখন স্থিতিশীল হিসেবে বিবেচিত হয়, ২০১৮ সালে সংস্করণ ১.০ থেকে, এবং জুলিয়া ১.x-এর জন্য পিছনের সামঞ্জস্যতা গ্যারান্টি প্রদান করে এবং ডকুমেন্টেড (স্থিতিশীল) API-এর জন্য স্থিতিশীলতার প্রতিশ্রুতি রয়েছে, যদিও প্রাথমিক উন্নয়নের সময় ০.৭ সংস্করণের পূর্বে নতুন সংস্করণে সিনট্যাক্স (এবং সিম্যান্টিকস) পরিবর্তন করা হয়েছিল। সমগ্র (রেজিস্টার্ড প্যাকেজ) ইকোসিস্টেম নতুন এবং উন্নত সিনট্যাক্স ব্যবহার করে, এবং বেশিরভাগ ক্ষেত্রে নতুন API-এর উপর নির্ভর করে যা নিয়মিতভাবে যোগ করা হয়েছে, এবং কিছু ক্ষেত্রে সামান্য অতিরিক্ত সিনট্যাক্স সামনের দিকে সামঞ্জস্য রেখে যেমন জুলিয়া 1.7-এ যুক্ত করা হয়েছে।
২০১২ সালে প্রি-১.০ জুলিয়া চালুর পর থেকে দশ বছরে, জুলিয়া সম্প্রদায়টি বড় হয়েছে। জুলিয়া প্যাকেজ ইকোসিস্টেমে ১১.৮ মিলিয়নেরও বেশি কোড লাইন রয়েছে (যার মধ্যে ডকুমেন্টেশন ও টেস্ট অন্তর্ভুক্ত)।[২৪] জুলিয়া ব্যবহারকারী ও ডেভেলপারদের জন্য JuliaCon নামে একাডেমিক সম্মেলনটি ২০১৪ সাল থেকে বার্ষিকভাবে অনুষ্ঠিত হচ্ছে, যেখানে JuliaCon2020[২৫] ২৮,৯০০ অনন্য দর্শকের স্বাগত জানায়,[২৬] এবং JuliaCon2021 অতীতের সকল রেকর্ড ভেঙে দেয় (YouTube-এ ৩০০টিরও বেশি JuliaCon2021 বিনামূল্যে পাওয়া যায়, আগের বছরের ১৬২ থেকে বাড়িয়ে), এবং সম্মেলনে ৪৩,০০০ অনন্য দর্শক উপস্থিত হয়।[২৭]
জুলিয়ার তিনজন সহ-স্রষ্টা/আবিষ্কারক ২০১৯ সালের জেমস এইচ. উইলকিনসন প্রাইজ ফর নিউমেরিক্যাল সফটওয়্যারের প্রাপক, যা প্রতি চার বছরে একবার প্রদান করা হয়। এটি তাদের জুলিয়া তৈরির জন্য প্রদান করা হয়, যা উচ্চ-প্রদর্শন ক্ষমতাসম্পন্ন টুল তৈরির জন্য উদ্ভাবনী একটি পরিবেশ হিসেবে কম্পিউটেশনাল বিজ্ঞান সমস্যার বিশ্লেষণ ও সমাধান করতে সক্ষম করে।[২৮] এছাড়া, অ্যালান এডেলম্যান, এমআইটি-র অ্যাপ্লাইড ম্যাথমেটিক্সের অধ্যাপক, ২০১৯ সালের IEEE কম্পিউটার সোসাইটি সিডনি ফার্নব্যাক পুরস্কারের জন্য নির্বাচিত হন। এই পুরস্কারটি উচ্চ-প্রদর্শন ক্ষমতাসম্পন্ন কম্পিউটিং, লিনিয়ার অ্যালজেব্রা এবং কম্পিউটেশনাল বিজ্ঞানে উল্লেখযোগ্য অগ্রগতির জন্য এবং জুলিয়া প্রোগ্রামিং ভাষায় অবদানের জন্য প্রদান করা হয়।[২৯][৩০]
রিলিজটি REPL (soft scope)-এর আচরণ পরিবর্তন করে, যা Jupyter-এ ব্যবহৃত পদ্ধতির সাথে সামঞ্জস্যপূর্ণ করে তোলে তবে REPL-এর বাইরে থাকা কোডের সাথেও সম্পূর্ণ সামঞ্জস্যপূর্ণ। বেশিরভাগ থ্রেড API-কে স্থিতিশীল হিসেবে চিহ্নিত করা হয়েছে, এবং এই রিলিজে "কোনো স্থায়ী ইমিউটেবল অবজেক্ট, তা মিউটেবল অবজেক্ট রেফারেন্স করে কি না তা নির্বিশেষে, এখন স্ট্যাক-এ বরাদ্দ করা যেতে পারে",[৩১] যা হিপ বরাদ্দ কমায়, যেমন ভিউ এখন আর বরাদ্দ হয় না। জুলিয়া ১.৫ "প্রথম চিত্র প্রদর্শন সময়" (TTFP বা TTFX, প্রথম X, আরও সাধারণ সমস্যা) কর্মক্ষমতার উপর দৃষ্টি দেয়, বিশেষত কম্পাইলেশনের গতি উন্নত করে এবং প্যাকেজ লোডিং উন্নত করার জন্য নতুন টুল যোগ করে।[৩২]
জুলিয়া ১.৬ ছিল ১.০-এর পর থেকে সবচেয়ে বড় রিলিজ, এবং এটি দীর্ঘতম সময়ের জন্য লং-টার্ম সাপোর্ট (LTS) সংস্করণ ছিল, যেখানে বেশ কিছু উন্নতি হয়েছে, যেমন সমান্তরাল প্রিপ্রকোম্পাইলেশন এবং দ্রুত প্যাকেজ লোডিং। কিছু ক্ষেত্রে "বড় আকারের বাইনারি উপাদানের জন্য ৫০ গুণ বেশি লোড সময় বৃদ্ধি" হয়েছে।[৩৩] সংস্করণ ১.৭ থেকে জুলিয়া ডেভেলপমেন্ট আবার সময়ভিত্তিক রিলিজ মডেলে ফিরে এসেছে।[৩৪]
জুলিয়া ১.৭.০ নভেম্বর ২০২১ সালে মুক্তি পায় এবং এতে অনেক পরিবর্তন যুক্ত হয়, যেমন একটি নতুন দ্রুততর র্যান্ডম-নাম্বার জেনারেটর। ২৫ মে ২০২২-এ ১.৭.৩ সংস্করণ প্রকাশিত হয়, যেটি কিছু সমস্যার সমাধান করে, যার মধ্যে একটি নিরাপত্তা আপডেটও অন্তর্ভুক্ত ছিল,[৩৫] এবং ১.৭.x আর সমর্থিত নয়।
জুলিয়া ১.৮ ২০২২ সালে মুক্তি পায় (এবং এর পরবর্তী সংস্করণ ১.৮.৫ জানুয়ারি ২০২৩-এ মুক্তি পায়[৩৬]), যা বাগ ফিক্স এবং "ইনভ্যালিডেশন" সমাধান করে এবং কম্পাইলিং দ্রুততর করে, কিছু ক্ষেত্রে ২৫% পর্যন্ত।[৩৭]
জুলিয়া ১.৯.০ ৭ মে ২০২৩ সালে মুক্তি পায়, এতে বেশ কিছু উন্নতি অন্তর্ভুক্ত ছিল, যেমন প্যাকেজগুলোকে নেটিভ মেশিন কোডে প্রিকম্পাইল করার সক্ষমতা (পুরোনো সংস্করণগুলোতে প্রিকম্পাইলেশন ছিল কিন্তু সম্পূর্ণভাবে নেটিভ কোডে নয়, ফলে "প্রথম ব্যবহারের" সময় কিছুটা ধীরগতি ছিল)। প্রিকম্পাইল করা প্যাকেজগুলো সংস্করণ ১.৯ থেকে প্রথম ব্যবহারে শতগুণ দ্রুততর হতে পারে (যেমন CSV.jl এবং DataFrames.jl-এর ক্ষেত্রে), এবং প্যাকেজ প্রিকম্পাইলেশন উন্নত করতে একটি নতুন প্যাকেজ PrecompileTools.jl প্রবর্তিত হয়েছে। জুলিয়া ১.১০.০ ২৫ ডিসেম্বর ২০২৩-এ প্রকাশিত হয় (এবং ২৭ আগস্ট ২০২৪-এ ১.১০.৫ সংস্করণে আপডেট), যাতে নতুন অনেক বৈশিষ্ট্য রয়েছে, যেমন সমান্তরাল গার্বেজ কালেকশন, উন্নত প্যাকেজ লোড সময়, এবং উন্নত স্ট্যাকট্রেস রেন্ডারিং সহ নতুন পার্সার।[৩৮]
জুলিয়া ১.১১.০ প্রকাশিত হয় ৭ অক্টোবর ২০২৪-এ (এবং ১.১১.১ ১৬ অক্টোবর), এবং এর সাথে ১.১০.৫ পরবর্তী লং-টার্ম সাপোর্ট (LTS) সংস্করণ হয়ে ওঠে (অর্থাৎ এখন শুধুমাত্র এই দুই সংস্করণ সমর্থিত), যা পরবর্তীতে ১.১০.৬-এ আপডেট করা হয় ২৮ অক্টোবর, এবং ১.৬ আর LTS সংস্করণ নেই। জুলিয়া ১.১১ নতুন একটি public কীওয়ার্ড যুক্ত করেছে যা নিরাপদ পাবলিক API নির্দেশ করতে ব্যবহৃত হয় (জুলিয়া ব্যবহারকারীদের পরামর্শ দেয়া হয় এই API ব্যবহার করতে, এবং জুলিয়া বা প্যাকেজের অভ্যন্তরীণ বিষয় নয়, এবং প্যাকেজ লেখকদের এই কীওয়ার্ড ব্যবহার করতে পরামর্শ দেয়া হয়েছে, সাধারণত @compat ম্যাক্রো দ্বারা, পুরোনো জুলিয়া সংস্করণগুলির সাথে, অন্তত LTS সংস্করণের জন্য, সামঞ্জস্য বজায় রাখার জন্য)। জুলিয়া ১.১১.১-এর স্টার্টআপের গতি উন্নত করা হয়েছে (১.১১.০-এর একটি অবনমন ছিল), এবং ১.১০-এর তুলনায়ও, যা কিছু বেঞ্চমার্কে গুরুত্বপূর্ণ হতে পারে।
কিছু ব্যবহারকারী ১.১১-এ আপগ্রেড করার বিষয়টি স্থগিত রাখতে পারেন (যেমন যারা R থেকে জুলিয়া কল করছেন), কারণ পরিচিত সাময়িক প্যাকেজ অসামঞ্জস্যতা রয়েছে।
অনেক ছোট বাইনারি এক্সিকিউটেবল তৈরি করা সম্ভব juliac দিয়ে, যা শুধুমাত্র আসন্ন জুলিয়া ১.১২ (বর্তমান "নাইটলি" সংস্করণ) এ পাওয়া যায়।
জুলিয়া কনফারেন্স (জুলিয়াকন)
২০১৪ সাল থেকে,[৩৯] জুলিয়া কমিউনিটি বার্ষিক জুলিয়া কনফারেন্স আয়োজন করে যা ডেভেলপার এবং ব্যবহারকারীদের উপর কেন্দ্রীভূত। প্রথম JuliaCon শিকাগোতে অনুষ্ঠিত হয়েছিল এবং এটি সম্মেলনের বার্ষিক আয়োজনের সূচনা করে। ২০১৪ সাল থেকে, এই সম্মেলন বিভিন্ন স্থানে অনুষ্ঠিত হয়েছে, যেমন MIT[৪০] এবং ইউনিভার্সিটি অফ মেরিল্যান্ড, বাল্টিমোর।[৪১] ইভেন্টের দর্শকসংখ্যা কয়েক ডজন থেকে বেড়ে ২০২০ সালে JuliaCon-এ ২৮,৯০০ জন অনন্য দর্শকে পৌঁছে, যা ভার্চুয়ালি অনুষ্ঠিত হয়েছিল।[৪২] JuliaCon 2021-ও ভার্চুয়ালি অনুষ্ঠিত হয়েছিল,[৪৩] যেখানে IEEE 754 ভাসমান বিন্দু স্ট্যান্ডার্ডের প্রধান স্থপতি উইলিয়াম কাহান (যা প্রায় সব CPU এবং ভাষায় ব্যবহৃত হয়, যার মধ্যে জুলিয়াও রয়েছে),[৪৪] জ্যান ভিটেক,[৪৫] শেরি লি, এবং পাইটর্চের সহ-স্রষ্টা সৌমিথ চিন্তালা প্রধান বক্তা হিসেবে ছিলেন।[৪৬] JuliaCon ২০২১-এ ৪৩,০০০ জন অনন্য দর্শক ছিল এবং ৩০০টিরও বেশি উপস্থাপনা ছিল (পুরোনো বছরের উপস্থাপনাগুলোও বিনামূল্যে উপলব্ধ)। JuliaCon ২০২২ জুলাই ২৭ থেকে ২৯ তারিখে ভার্চুয়ালভাবে অনুষ্ঠিত হবে এবং প্রথমবারের মতো একাধিক ভাষায়, শুধু ইংরেজিতে নয়।
স্পন্সর
জুলিয়া ভাষা ২০১৪ সালে নামফোকাস-এর অর্থনৈতিক স্পন্সরশিপ প্রকল্পে অন্তর্ভুক্ত হয়, যা প্রকল্পটির দীর্ঘমেয়াদী স্থায়িত্ব নিশ্চিত করার প্রচেষ্টা হিসেবে গৃহীত হয়।[৪৭] MIT লিংকন ল্যাবরেটরির জেরেমি কেপনার ছিলেন জুলিয়া প্রকল্পের প্রাথমিক স্পন্সর। এছাড়া, গর্ডন এবং বেটি মুর ফাউন্ডেশন, আলফ্রেড পি. স্লোন ফাউন্ডেশন, ইন্টেল, এবং ন্যাশনাল সায়েন্স ফাউন্ডেশন , ডার্পা (DARPA), ন্যাশনাল ইনস্টিটিউটস অফ হেলথ, নাসা (NASA), এবং ফেডারেল এভিয়েশন অ্যাডমিনিস্ট্রেশন-এর মতো সংস্থাগুলোর তহবিল জুলিয়ার বিকাশে গুরুত্বপূর্ণ ভূমিকা পালন করেছে।[৪৮] ফায়ারফক্স ওয়েব ব্রাউজারের নির্মাতা মজিলা, ২০১৯ সালের প্রথমার্ধে গবেষণা অনুদানের মাধ্যমে "জুলিয়াকে ব্রাউজারে নিয়ে আসা" প্রকল্পে "জুলিয়া দলের একজন সদস্যকে" স্পন্সর করে,[৪৯] অর্থাৎ Firefox এবং অন্যান্য ওয়েব ব্রাউজারে জুলিয়াকে সংহত করার জন্য।[৫০][৫১][৫২][৫৩] জুলিয়া ভাষাটি গিটহাবে ব্যক্তিগত অনুদাতাদের দ্বারাও সমর্থিত।[৫৪]
ভাষার বৈশিষ্ট্য
জুলিয়া একটি সাধারণ উদ্দেশ্যের প্রোগ্রামিং ভাষা (অল পারপাস প্রোগ্রামিং ল্যাঙ্গুয়েজ),[৫৫] যা মূলত সংখ্যাসম্পর্কিত ও প্রযুক্তিগত গণনার জন্য ডিজাইন করা হয়েছিল। এটি লো-লেভেল সিস্টেম প্রোগ্রামিং,[৫৬] স্পেসিফিকেশন ভাষা,[৫৭] হার্ডওয়্যার যেমন FPGA-এর জন্য উচ্চ-স্তরের সংশ্লেষণ (HLS) টুল,[৫৮] এবং ওয়েব প্রোগ্রামিং[৫৯] উভয় সার্ভার[৬০][৬১] এবং ক্লায়েন্ট[৬২][৬৩] সাইডে ব্যবহৃত হয়।
ভাষার প্রধান বৈশিষ্ট্যসমূহ:
মাল্টিপল ডিসপ্যাচ: আর্গুমেন্টের টাইপের বিভিন্ন সংমিশ্রণের জন্য ফাংশনের আচরণ নির্ধারণের ক্ষমতা প্রদান
ডাইনামিক টাইপ সিস্টেম: ডকুমেন্টেশন, অপ্টিমাইজেশন, এবং ডিসপ্যাচের জন্য টাইপ
সি ভাষার মতো স্ট্যাটিকালি-টাইপড ভাষার পারফরম্যান্সের কাছাকাছি গতি
একটি বিল্ট-ইন প্যাকেজ ম্যানেজার
লিস্প-সদৃশ ম্যাক্রো এবং অন্যান্য মেটাপ্রোগ্রামিং সুবিধা
সমান্তরাল এবং বিতরণকৃত কম্পিউটিংয়ের জন্য ডিজাইন করা
কোরোউটিন: লাইটওয়েট "গ্রীন" থ্রেডিং
বিভিন্ন আর্গুমেন্ট টাইপের জন্য স্বয়ংক্রিয় কোড জেনারেশন
সংখ্যা এবং অন্যান্য টাইপের জন্য প্রসারণযোগ্য রূপান্তর ও প্রচার
মাল্টিপল ডিসপ্যাচ (লিস্পে একে মাল্টিমেথডও বলা হয়) একক ডিসপ্যাচের একটি সাধারণীকরণ, যা সাধারণভাবে অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) * * ভাষায় ব্যবহৃত বহুরূপী পদ্ধতি। যেমন: পাইথন, সি++, জাভা, জাভাস্ক্রিপ্ট, এবং স্মলটকের মতো ভাষায় উত্তরাধিকার ব্যবহার করে। জুলিয়াতে, সব কংক্রিট টাইপই অ্যাবস্ট্রাক্ট টাইপের সাবটাইপ, যা সরাসরি বা পরোক্ষভাবে Any টাইপের সাবটাইপ, যা টাইপ হায়ারার্কির শীর্ষে। কংক্রিট টাইপগুলি নিজে সাবটাইপ হতে পারে না, বরং কম্পোজিশন ব্যবহার করা হয় (দেখুন উত্তরাধিকার বনাম সাবটাইপিং)।
ডিফল্টভাবে, জুলিয়া রানটাইম প্রি-ইনস্টল থাকতে হবে কারণ ব্যবহারকারী-প্রদত্ত সোর্স কোড রান করে। অন্যভাবে, AppBundler.jl ব্যবহার করে জুলিয়া GUI অ্যাপগুলো একটি একক ফাইলে দ্রুত বান্ডেল করা যায়,[৬৪] যা "আধুনিক ডেস্কটপ অ্যাপ্লিকেশন ইনস্টলার ফরম্যাটে জুলিয়া GUI অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়। এটি লিনাক্সের জন্য Snap, উইন্ডোজের জন্য MSIX, এবং MacOS-এর জন্য DMG ফরম্যাটে তৈরি করে এবং পূর্ণ জুলিয়াকে অ্যাপের মধ্যে অন্তর্ভুক্ত করে।"[৬৫] PackageCompiler.jl স্বাধীন এক্সিকিউটেবল তৈরি করতে পারে যা জুলিয়া সোর্স কোড ছাড়াই চালানো যায়।[৬৬]
জুলিয়াতে, প্রতিটি উপাদানই একটি অবজেক্ট, অনেকটা অবজেক্ট-ওরিয়েন্টেড ভাষার মতো; তবে, বেশিরভাগ অবজেক্ট-ওরিয়েন্টেড ভাষার মতো নয়, এখানে সব ফাংশন multiple dispatch ব্যবহার করে মেথড নির্বাচন করে, single dispatch-এর পরিবর্তে।
জুলিয়ার হোমোইকনিক ম্যাক্রো এবং প্যাকেজ ব্যবহার করে বেশিরভাগ প্রোগ্রামিং প্যারাডাইম বাস্তবায়ন করা যায়। জুলিয়ার সিনট্যাকটিক ম্যাক্রো (মেটাপ্রোগ্রামিং-এর জন্য ব্যবহৃত), যেমন লিস্প ম্যাক্রো, প্রিপ্রসেসরে ব্যবহৃত টেক্সট-সাবস্টিটিউশন ম্যাক্রো থেকেও বেশি শক্তিশালী, যা কিছু অন্যান্য ভাষায় যেমন C-তে ব্যবহৃত হয়, কারণ এগুলি abstract syntax trees (ASTs)-এর স্তরে কাজ করে। জুলিয়ার ম্যাক্রো সিস্টেম হাইজেনিক, তবে প্রয়োজনে ইচ্ছাকৃত ক্যাপচার সমর্থন করে (যেমন অ্যানাফোরিক ম্যাক্রোর জন্য) esc কনস্ট্রাক্ট ব্যবহার করে।
জুলিয়া বিভিন্ন লিস্প ডায়ালেক্ট থেকে অনুপ্রেরণা নিয়েছে, যেমন Scheme এবং Common Lisp,[৬৭] এবং এটি Dylan এর সাথে অনেক বৈশিষ্ট্য শেয়ার করে, যা একটি মাল্টিপল ডিসপ্যাচ-অরিয়েন্টেড ডাইনামিক ভাষা (যার একটি ইনফিক্স সিনট্যাক্স রয়েছে, লিস্প-সদৃশ প্রিফিক্স সিনট্যাক্সের পরিবর্তে; জুলিয়াতে "সবকিছুই"[৬৮] এক্সপ্রেশন), এবং Fortress এর সাথে, যা আরেকটি সংখ্যাসম্পর্কিত প্রোগ্রামিং ভাষা (যাতে মাল্টিপল ডিসপ্যাচ এবং একটি উন্নত প্যারামেট্রিক টাইপ সিস্টেম রয়েছে)। যেখানে Common Lisp Object System (CLOS) কমন লিস্প-এ মাল্টিপল ডিসপ্যাচ যোগ করে, সেখানে সব ফাংশন জেনেরিক ফাংশন নয়।
জুলিয়া, ডিলান, এবং ফোর্ট্রেসে, এক্সটেনসিবিলিটি ডিফল্ট হিসেবে অন্তর্ভুক্ত এবং সিস্টেমের বিল্ট-ইন ফাংশনগুলো সবই জেনেরিক এবং এক্সটেনসিবল। ডিলানে, জুলিয়ার মতো মাল্টিপল ডিসপ্যাচও একটি মৌলিক বৈশিষ্ট্য; সকল ব্যবহারকারী-সংজ্ঞায়িত ফাংশন এবং এমনকি মৌলিক বিল্ট-ইন অপারেশন যেমন + ও জেনেরিক। তবে, ডিলানের টাইপ সিস্টেম সম্পূর্ণরূপে প্যারামেট্রিক টাইপ সমর্থন করে না, যা মেশিন লার্নিং লিনিয়েজ এর ভাষাগুলোর মধ্যে বেশি দেখা যায়। ডিফল্টভাবে, CLOS কমন লিস্পের প্যারামেট্রিক টাইপগুলোর জন্য ডিসপ্যাচ সমর্থন করে না; এমন উন্নত ডিসপ্যাচ অর্থনীতি শুধুমাত্র CLOS মেটা অবজেক্ট প্রোটোকলের মাধ্যমে এক্সটেনশন হিসেবে যোগ করা যায়। ডিজাইনের অভিসারমূলক উপায়ে, ফোর্ট্রেসও প্যারামেট্রিক টাইপের উপর মাল্টিপল ডিসপ্যাচ সমর্থন করে; তবে, জুলিয়ার মতো ডাইনামিক না হয়ে, ফোর্ট্রেস স্ট্যাটিক টাইপড, যার পৃথক কম্পাইলিং এবং এক্সিকিউটিং ধাপ রয়েছে। নিচের টেবিলে ভাষার বৈশিষ্ট্যগুলো সংক্ষেপে উল্লেখ করা হলো:
প্রোগ্রামিং ভাষা
টাইপ সিস্টেম
জেনেরিক ফাংশন
প্যারামেট্রিক পলিমর্ফিসম
জুলিয়া
ডায়নামিক
ডিফল্ট
হ্যাঁ
কমন লিস্প
ডায়নামিক
অপ্ট-ইন
হ্যাঁ (কিন্তু ডিস্প্যাচ হয়নি)
ডিলান
ডাইনামিক
ডিফল্ট
আংশিক (ডিস্প্যাচ হয়নি)
ফোর্ট্রেস
স্টাটিক
ডিফল্ট
হ্যাঁ
জুলিয়ার এক্সটেনসিবিলিটির একটি উদাহরণ হলো Unitful.jl প্যাকেজ, যা ভাষায় শারীরিক পরিমাপ এককসমূহের জন্য সমর্থন যোগ করে।
ইন্টারঅপারেবিলিটি
জুলিয়ায় বিল্ট-ইন সাপোর্ট রয়েছে C বা Fortran ভাষার লাইব্রেরিগুলোকে @ccall ম্যাক্রো ব্যবহার করে কল করার জন্য। অতিরিক্ত লাইব্রেরিগুলোর মাধ্যমে ব্যবহারকারীরা Python,[৬৯] R,[৭০] C++,[৭১] Java,[৭২] এবং SQL-এর সঙ্গে কাজ করতে পারেন।[৭৩][৭৪][৭৫][৭৬]
পৃথকভাবে কম্পাইল করা এক্সিকিউটেবল অপশন
জুলিয়াকে PackageCompiler.jl ব্যবহার করে বাইনারি এক্সিকিউটেবল হিসেবে কম্পাইল করা যায়।[৬৬] ছোট আকারের এক্সিকিউটেবল তৈরি করার জন্য StaticCompiler.jl ব্যবহার করে ভাষার একটি স্ট্যাটিক সাবসেটেও লেখা যেতে পারে, যা রানটাইম ডিস্প্যাচ সমর্থন করে না (এছাড়াও এটি রানটাইম এবং গারবেজ কালেকশনকেও বাদ দেয়)।[৭৭]
মিথস্ক্রিয়া/ইন্টারঅ্যাকশন
জুলিয়ার অফিসিয়াল ডিস্ট্রিবিউশনে একটি ইন্টারেক্টিভ কমান্ড-লাইন read-eval-print loop (REPL) অন্তর্ভুক্ত রয়েছে,[৭৮] যা একটি সার্চেবল হিস্ট্রি, ট্যাব কমপ্লিশন, এবং ডেডিকেটেড হেল্প ও শেল মোড[৭৯] সহ সরবরাহ করা হয়, যা কোড দ্রুত পরীক্ষার জন্য ব্যবহার করা যায়।[৮০] নিচের অংশে একটি নমুনা সেশন দেখানো হয়েছে যেখানে println স্বয়ংক্রিয়ভাবে স্ট্রিংগুলোকে একত্র করে:[৮১]
julia> p(x) = 2x^2 + 1; f(x, y) = 1 + 2p(x)y julia> println("Hello world!", " I'm on cloud ", f(0, 4), " as Julia supports recognizable syntax!") Hello world! I'm on cloud 9 as Julia supports recognizable syntax!
REPL ব্যবহারকারীদের সিস্টেম শেল এবং হেল্প মোডে অ্যাক্সেস প্রদান করে, যথাক্রমে প্রম্পটের পরে ; বা ? প্রেস করার মাধ্যমে। এটি কমান্ডের হিস্ট্রি সংরক্ষণ করে, এমনকি সেশনগুলোর মধ্যেও।[৮২] কোড জুলিয়ার ইন্টারেক্টিভ সেশনের মধ্যে পরীক্ষা করা যায় অথবা .jl এক্সটেনশনের ফাইলে সংরক্ষণ করে কমান্ড লাইনে রান করা যায় এইভাবে:[৬৮]
$ julia<filename>
জুলিয়া UTF-8 এবং LaTeX কোড ব্যবহার করে, যা বিভিন্ন অপারেটরের জন্য সাধারণ গাণিতিক প্রতীকসমূহ সমর্থন করে, যেমন ∈ ব্যবহার করে in অপারেটর, যা \in টাইপ করার পর TAB চাপলে পাওয়া যায় (অথবা সরাসরি কপি-পেস্ট করেও ব্যবহার করা যায়, যেমন √ এবং ∛, যা square root এবং cube root ফাংশনের জন্য ব্যবহার করা যায়)। জুলিয়ায় সর্বশেষ প্রধান সংস্করণ Unicode 15.0 সমর্থন রয়েছে (Julia 1.11-DEV সর্বশেষ 15.1 পয়েন্ট রিলিজ সমর্থন করে[৮৩])[৮৪] যা বিশ্বের বিভিন্ন ভাষা সমর্থন করে, এমনকি সোর্স কোডেও, যেমন ভেরিয়েবল নাম হিসেবে (যদিও পাবলিক কোডে ইংরেজি ব্যবহার সুপারিশ করা হয়, যেমন প্যাকেজ নামের ক্ষেত্রে)।
জুলিয়া Project Jupyter-এর মাধ্যমে সমর্থিত, যা একটি অনলাইন ইন্টারেক্টিভ "নোটবুক" পরিবেশ,[৮৫] এবং Pluto.jl, যা একটি "রিঅ্যাক্টিভ নোটবুক" (যেখানে নোটবুকগুলো শুধুমাত্র জুলিয়া ফাইল হিসেবে সংরক্ষণ করা হয়), একটি সম্ভাব্য বিকল্প।[৮৬] এছাড়াও, Posit (পূর্বে RStudio Inc.) এর Quarto পাবলিশিং সিস্টেম Julia, Python, R এবং Observable JavaScript সমর্থন করে (এই ভাষাগুলো সংস্থার দ্বারা আনুষ্ঠানিকভাবে সমর্থিত এবং একই নোটবুক ডকুমেন্টে একত্রে ব্যবহার করা সম্ভব; আরও ভাষা আনুষ্ঠানিকভাবে সমর্থন করা হয় না)।[৮৭][৮৮]
REPL অতিরিক্ত মোড দিয়ে সম্প্রসারিত করা যায় এবং প্যাকেজের মাধ্যমে এর সম্প্রসারণ ঘটানো হয়েছে, যেমন ডেটাবেস অ্যাক্সেসের জন্য একটি SQL মোড[৮৯] এবং RCall.jl প্যাকেজে R ভাষার সাথে কাজ করার জন্য একটি R মোড যোগ করা হয়েছে।[৯০]
অন্যান্য ভাষার সাথে ব্যবহার
জুলিয়া বাস্তবে অন্যান্য ভাষার সাথে ইন্টারঅপারেবল, এমনকি শীর্ষ ২০টি জনপ্রিয় ভাষার অধিকাংশের সাথেও। জুলিয়ার মাধ্যমে আলাদাভাবে শেয়ার করা লাইব্রেরি ফাংশন, যেমন C বা Fortran এ লেখা ফাংশনগুলোকে কল করা যায়, এবং অন্যান্য ভাষা (যেগুলো সরাসরি C-এ এক্সপোর্টেড ফাংশন সরবরাহ করে না) কল করার জন্যও প্যাকেজ রয়েছে, যেমন Python (PythonCall.jl দিয়ে), R,[৯১] MATLAB, C# (এবং অন্যান্য .NET ভাষাগুলোর জন্য DotNET.jl, যেখানে JdotNET থেকে কল করা যায়), JavaScript, Java (এবং অন্যান্য JVM ভাষা, যেমন Scala JavaCall.jl দিয়ে)। কিছু প্যাকেজের মাধ্যমে Julia অন্যান্য ভাষা থেকেও কল করা যায়, যেমন Python থেকে, R (বর্তমানে Julia 1.10.x পর্যন্ত সম্ভব[৯২]), Rust, Ruby, বা C#। Python থেকে কল করতে juliacall (PythonCall.jl এর অংশ) এবং R থেকে Julia 1.10.x পর্যন্ত কল করার জন্য একটি আলাদা JuliaCall প্যাকেজ রয়েছে। জুলিয়া হার্ডওয়্যারের জন্যও ব্যবহৃত হয়েছে, যেমন VHDL-এ কম্পাইল করতে এবং FPGA-এর জন্য উচ্চ-স্তরের সিন্থেসিস টুল হিসেবে।[৫৮]
জুলিয়ার প্যাকেজে মার্কআপ ভাষা সমর্থন রয়েছে, যেমন HTML (এবং HTTP), XML, JSON এবং BSON, এবং ডেটাবেসের জন্যও রয়েছে (যেমন PostgreSQL,[৯৩] Mongo,[৯৪] Oracle, যার মধ্যে TimesTen-ও রয়েছে,[৯৫] MySQL, SQLite, Microsoft SQL Server,[৯৪] Amazon Redshift, Vertica, ODBC) এবং ওয়েব ব্যবহারের জন্য সাধারণত সহায়ক।[৯৬][৯৭]
প্যাকেজ সিস্টেম
জুলিয়ার একটি বিল্ট-ইন প্যাকেজ ম্যানেজার রয়েছে এবং এতে ডিফল্ট রেজিস্ট্রি সিস্টেম অন্তর্ভুক্ত রয়েছে।[৯৮] প্যাকেজগুলো প্রায়শই GitHub এ সোর্স কোড হিসেবে বিতরণ করা হয়, যদিও বিকল্প মাধ্যমও ব্যবহার করা যেতে পারে। প্যাকেজগুলো বাইনারি আকারে ইনস্টল করা যায়, যেখানে আর্টিফ্যাক্টস ব্যবহার করা হয়।[৯৯] জুলিয়ার প্যাকেজ ম্যানেজার প্যাকেজের প্রশ্নোত্তর ও কম্পাইল করার পাশাপাশি এনভায়রনমেন্ট ম্যানেজ করতেও ব্যবহৃত হয়। এটি ফেডারেটেড প্যাকেজ রেজিস্ট্রিগুলোকেও সমর্থন করে, যার মাধ্যমে অফিসিয়াল ছাড়াও স্থানীয়ভাবে অন্যান্য রেজিস্ট্রি যোগ করা যায়।[১০০]
ইমপ্লিমেন্টেশন
জুলিয়ার মূল কাঠামো Julia এবং C ভাষায় তৈরি করা হয়েছে, সাথে C++ ব্যবহার করা হয়েছে LLVM নির্ভরতার জন্য। কোড পার্সিং, কোড-লোয়ারিং, এবং বুটস্ট্র্যাপিং FemtoLisp-এ বাস্তবায়িত ছিল, যা Scheme ভাষার একটি ডায়ালেক্ট, সংস্করণ 1.10 পর্যন্ত।[১০১] সেই সংস্করণের পর থেকে নতুন পিওর-জুলিয়া প্যাকেজ JuliaSyntax.jl পার্সিংয়ের জন্য ব্যবহৃত হচ্ছে (যদিও পুরনোটি এখনও পছন্দ অনুযায়ী ব্যবহার করা যায়)[১০২] যা গতি বাড়ায় এবং বিভিন্ন ক্ষেত্রে পার্সার ত্রুটি বার্তাগুলিকে যথেষ্ট উন্নত করে।[১০৩] LLVM কম্পাইলার ইনফ্রাস্ট্রাকচার প্রজেক্টটি অপ্টিমাইজড মেশিন কোড জেনারেট করতে ব্যাক এন্ড হিসাবে ব্যবহৃত হয়, যা প্রায় সব জনপ্রিয় প্ল্যাটফর্মে চলে। কিছু ব্যতিক্রম ছাড়া, স্ট্যান্ডার্ড লাইব্রেরি Julia ভাষায় বাস্তবায়িত।
বর্তমান এবং ভবিষ্যৎ প্ল্যাটফর্মসমূহ
জুলিয়ার টিয়ার ১ macOS সমর্থন রয়েছে, ৬৪-বিট Apple Silicon ম্যাকের জন্য, নেটিভভাবে (পূর্বে এই Apple M1-ভিত্তিক ম্যাকগুলো কেবল Rosetta 2 এমুলেশনের মাধ্যমে সমর্থিত ছিল[১০৪][১০৫]), এবং এটি Intel-ভিত্তিক ম্যাককেও সম্পূর্ণভাবে সমর্থন করে। Windows on ARM-এর এখনও আনুষ্ঠানিক সমর্থন নেই। জুলিয়ার OpenBSD-তে "প্রাথমিক সমর্থন" রয়েছে, এবং এটি বাস্তবিকভাবে কাজ করানোর জন্য আরও উন্নতির কাজ চলছে।
জুলিয়ার চারটি সমর্থন টিয়ার রয়েছে।[১০৬] সকল IA-32 প্রসেসর, যা i686 সাবআর্কিটেকচারের সম্পূর্ণ প্রয়োগ করে, এবং সকল ৬৪-বিট x86-64 (aka amd64) প্রসেসর প্রায় এক দশক পুরনো হলেও সমর্থিত। Armv8 (AArch64) প্রসেসরগুলো macOS-এর জন্য প্রথম টিয়ারে সমর্থিত; অন্যথায় Linux-এ দ্বিতীয় টিয়ার এবং ARMv7 (AArch32)-এর জন্য তৃতীয় টিয়ারে রয়েছে।[১০৭]
অজস্য প্যাকেজ GPU দ্বারা পরিচালিত:[১০৮] Nvidia GPU-এর জন্য CUDA.jl প্যাকেজ (৬৪-বিট Linux-এ টিয়ার ১ এবং ৬৪-বিট Windows-এ টিয়ার ২), Parallel Thread Execution বাস্তবায়নের জন্য কম্পিউট ক্যাপাবিলিটি ৩.৫ (Kepler) বা তার বেশি প্রয়োজন; দুটোর জন্যই CUDA ১১+ প্রয়োজন, যদিও পুরনো প্যাকেজ সংস্করণগুলো CUDA ৯ পর্যন্ত কাজ করে। অন্যান্য অ্যাক্সিলারেটর যেমন Google-এর TPUসমূহ,[১০৯] কিছু Intel-এর ইন্টিগ্রেটেড GPU, oneAPI.jl,[১১০] এবং AMD এর GPU-এর জন্য OpenCL ও পরীক্ষামূলক ROCm স্ট্যাক সমর্থন রয়েছে।[১১১] কিছু প্ল্যাটফর্মে, জুলিয়াকে সোর্স কোড থেকে কম্পাইল করতে হতে পারে (যেমন মূল Raspberry Pi), যা নির্দিষ্ট বিল্ড বিকল্প সহ প্রয়োজন হতে পারে। এটি পূর্বে করা হয়েছে এবং অপ্রচলিত প্রি-বিল্ট বাইনারিগুলি (এবং বিল্ড নির্দেশাবলী) উপলব্ধ রয়েছে।[১১২][১১৩] ছোট Raspberry Pi থেকে শুরু করে বিশ্বের দ্রুততম সুপারকম্পিউটার Fugaku-র ARM-ভিত্তিক A64FX পর্যন্ত বিভিন্ন ARM প্ল্যাটফর্মে জুলিয়া বিল্ড করা হয়েছে।[১১৪] PowerPC (৬৪-বিট)-এর টিয়ার ৩ সমর্থন রয়েছে, যার অর্থ এটি "বিল্ড হতে পারে বা নাও পারে"।
জুলিয়া এখন Raspbian-এ সাপোর্ট করে,[১১৫] যদিও নতুন Pi মডেলগুলির জন্য সমর্থন আরও ভালো, যেমন Armv7 বা তার নতুন ভার্সনসহ; জুলিয়া সমর্থন Raspberry Pi Foundation দ্বারা প্রচারিত হয়।[১১৬] এছাড়াও জুলিয়া 64-বিট RISC-V-এর জন্য তৈরি করা হয়েছে,[১১৭][১১৮] যার কিছু সমর্থন কোড মূল জুলিয়াতে অন্তর্ভুক্ত রয়েছে।
যদিও জুলিয়া সাধারণত একটি অপারেটিং সিস্টেম প্রয়োজন, এবং এটি কোনও এমবেডেড সিস্টেম প্ল্যাটফর্মে (যেমন Arduino) চালানোর জন্য অফিসিয়াল সমর্থন নেই, তারপরও জুলিয়া কোড চালানো সম্ভব হয়েছে, কিছু সীমাবদ্ধতার সাথে। উদাহরণস্বরূপ, একটি ব্যারেমেটাল 16 MHz 8-বিট (ATmega328P) AVR-মাইক্রোকন্ট্রোলার সহ Arduino-তে, যার ২ KB RAM এবং ৩২ KB ফ্ল্যাশ মেমরি রয়েছে।[১১৯][১২০]
অভিযোজন/অ্যাডাপ্টেশন
জুলিয়া অনেক বিশ্ববিদ্যালয়ের পাঠ্যক্রমে গ্রহণ করা হয়েছে, যেমন এমআইটি, স্টানফোর্ড, ইউসি বার্কলি ইত্যাদি। অনেক খাতের বৃহৎ বেসরকারি প্রতিষ্ঠানও এই ভাষাটি গ্রহণ করেছে, যার মধ্যে রয়েছে Amazon, IBM, JP Morgan AI Research,[১২১] এবং ASML। জুলিয়া NASA, FAA এবং প্রতিটি মার্কিন জাতীয় শক্তি ল্যাবরেটরি সহ বিভিন্ন সরকারি সংস্থার দ্বারাও ব্যবহৃত হয়েছে।[১২২][১২৩]
বৈজ্ঞানিক কম্পিউটিং এবং প্রকৌশল
অ্যামাজন, কোয়ান্টাম কম্পিউটিং[১২৪] এবং Amazon SageMaker-এর মাধ্যমে মেশিন লার্নিং[১২৫]
এএসএমএস, তাদের মেশিনে হার্ড রিয়েল-টাইম প্রোগ্রামিং[১২৬]
The Climate Modeling Alliance, জলবায়ু পরিবর্তন মডেলিংয়ের জন্য[১২৭][১২৮]
সার্ন, লার্জ হাইড্রোজেন কোলাইডার থেকে সংগৃহীত তথ্য বিশ্লেষণের জন্য (LHCb experiment)[১২৯][১৩০]
নাসা এবং জেট প্রোপালশন ল্যাবোরেটরি, মহাকাশযান বিচ্ছেদ গতিশীলতা মডেলিং, ট্রাপিস্ট বহির্জাগতিক গ্রহের তথ্য বিশ্লেষণ, এবং মহাবিশ্বের সূচনা থেকে কসমিক মাইক্রোওয়েভ ব্যাকগ্রাউন্ড (cosmic microwave background) ডেটা বিশ্লেষণের জন্য জুলিয়া ব্যবহার করে[১৩১][১৩২]
ব্রাজিলিয়ান National Institute for Space Research (INPE), মহাকাশ মিশন এবং উপগ্রহের সিমুলেশনের জন্য Julia ব্যবহার করে[১৩৩]
এমবেডেড হার্ডওয়্যার, যা স্বয়ংক্রিয়ভাবে মার্কিন বিমান বাহিনী গবেষণা পরীক্ষাগারে উল্লম্ব টেকঅফ এবং ল্যান্ডিং (VTOL) ড্রোনের মিশন পরিকল্পনা ও সম্পাদন করতে সক্ষম[১৩৪]
ফার্মাসিউটিক্যালস এবং ঔষধ উন্নয়ন
ফার্মাসিউটিক্যাল শিল্পে ওষুধ উন্নয়নের জন্য Julia ব্যাপকভাবে ব্যবহৃত হয় এবং Moderna, Pfizer, AstraZeneca, Procter & Gamble, এবং United Therapeutics-এর মতো কোম্পানিগুলো এটি গ্রহণ করেছে।[১৩৫][১৩৬]
অর্থনীতি, অর্থ এবং রাজনৈতিক বিজ্ঞান
নিউইয়র্কের ফেডারেল রিজার্ভ ব্যাংক, ২০১৫ সাল থেকে Julia ব্যবহার করে ম্যাক্রোইকোনমিক মডেলিংয়ে নিযুক্ত রয়েছে, ২০২১ সালে COVID-19-এর ধাক্কা বিশ্লেষণসহ।[১৩৭]
ব্যাংক অফ কানাডা, কেন্দ্রীয় ব্যাংক, ম্যাক্রোইকোনমিক মডেলিংয়ের জন্য[১৩৮]
BlackRock, বিশ্বের বৃহত্তম সম্পদ ব্যবস্থাপক, আর্থিক সময়সীমার বিশ্লেষণের জন্য[১৩৯]
Aviva, যুক্তরাজ্যের বৃহত্তম সাধারণ বীমা কোম্পানি, অ্যাকচুয়ারিয়াল গণনার জন্য[১৩৯]
Mitre Corporation, প্রকাশিত নির্বাচন ফলাফল যাচাইয়ের জন্য[১৪০]
নোবেল বিজয়ী থমাস জে সার্জেন্ট, ম্যাক্রোইকোনোমেট্রিক মডেলিংয়ের জন্য[১৪১]
টীকা
↑ প্যারাম্যাট্রিক পলিমর্ফিজম হল প্রোগ্রামিং ভাষাকে অর্থবহ করে তোলা যাতে করে সজেই কোডিং বোঝা যায়।
↑ ডাইনামিক প্রোগ্রামিং হল কম্পাইলেশন না করেই কোডিং এর বিশেষ অংশ চালু বা পরীক্ষা করে দেখা।
↑ মাল্টিপল ডিস্প্যাচ হল কোডিং এর ছোট বা বিশেষ অংশ চালু বা পরীক্ষা করে দেখা।
↑ স্ক্রিপ্টিং ভাষা এমন একটি প্রোগ্রামিং ভাষা যা মূলত স্বয়ংক্রিয় কাজ সম্পাদন বা নির্দিষ্ট কমান্ডের ধারাবাহিকতা পরিচালনার জন্য ব্যবহৃত হয়। সাধারণত স্ক্রিপ্টিং ভাষাগুলোতে কোড সরাসরি রানটাইমে (ব্যবহারের সময়) কম্পাইল বা এক্সিকিউট হয়, অর্থাৎ এগুলোতে প্রাথমিকভাবে কোডকে মেশিন ভাষায় অনুবাদ করতে হয় না।
তথ্যসূত্র
↑"Smoothing data with Julia's @generated functions"। ৫ নভেম্বর ২০১৫। সংগ্রহের তারিখ ৯ ডিসেম্বর ২০১৫। Julia's generated functions are closely related to the multistaged programming (MSP) paradigm popularized by Taha and Sheard, which generalizes the compile time/run time stages of program execution by allowing for multiple stages of delayed code execution.
↑"JuliaCon 2016"। JuliaCon। সংগ্রহের তারিখ ৬ ডিসেম্বর ২০১৬। He has co-designed the programming language Scheme, which has greatly influenced the design of Julia
↑Jeff Bezanson; Stefan Karpinski; Viral Shah; Alan Edelman; ও অন্যান্য। "The Julia Language"। julialang.org (ইংরেজি ভাষায়)। সংগ্রহের তারিখ ২০২০-০৮-১৪। There are some size-based limits to which structs can be stack allocated, but they are unlikely to be exceeded in practice.
↑Jeff Bezanson; Stefan Karpinski; Viral Shah; Alan Edelman; ও অন্যান্য। "The Julia Language"। julialang.org (ইংরেজি ভাষায়)। সংগ্রহের তারিখ ২০২০-০৯-১৬।
↑Jeff Bezanson; Stefan Karpinski; Viral Shah; Alan Edelman; ও অন্যান্য। "Julia 1.6 Highlights"। julialang.org (ইংরেজি ভাষায়)। ২৬ মার্চ ২০২১ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০২১-০৩-২৬।
↑"JuliaCon 2016 at MIT"। mit.edu। ১৮ জুলাই ২০১৬। ২৪ জুন ২০২১ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০২১-০৬-২০।
↑"JuliaCon 2019 at UMB"। technical.ly। ২৩ জুলাই ২০১৯। ২৪ জুন ২০২১ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০২১-০৬-২০।
↑"JuliaCon 2020 wrap up"। julialang.org। ৩০ নভেম্বর ২০২০ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০২১-০৬-২০।
↑"JuliaCon 2021"। Juliacon.org। ২০ জুন ২০২১ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০২১-০৬-২০।
↑"JuliaCon 2021 Highlights"। julialang.org (ইংরেজি ভাষায়)। ৬ সেপ্টেম্বর ২০২১ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০২২-০৩-০৩। This year's JuliaCon was the biggest and best ever, with more than 300 presentations available for free on YouTube, more than 20,000 registrations, and more than 43,000 unique YouTube viewers during the conference, up from 162 presentations, 10,000 registrations, and 28,900 unique YouTube viewers during last year's conference.
↑"Jan Vitek Homepage"। janvitek.org। ২২ জানুয়ারি ২০২৪ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০২১-০৬-২০।
↑"Mozilla Research Grants 2019H1"। Mozilla (ইংরেজি ভাষায়)। ৯ অক্টোবর ২০১৯ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০১৯-০৯-২২। running language interpreters in WebAssembly. To further increase access to leading data science tools, we're looking for someone to port R or Julia to WebAssembly and to attempt to provide a level 3 language plugin for Iodide: automatic conversion of data basic types between R/Julia and Javascript, and the ability to share class instances between R/Julia and Javascript.
↑"Literate scientific computing and communication for the web: iodide-project/iodide"। iodide। ২০১৯-০৯-২০। ২৪ আগস্ট ২০১৮ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০১৯-০৯-২২। We envision a future workflow that allows you to do your data munging in Python, fit a quick model in R or JAGS, solve some differential equations in Julia, and then display your results with a live interactive d3+JavaScript visualization ... and all that within a single, portable, sharable, and hackable file.
↑"The Julia Language" (official website)। ২১ ফেব্রুয়ারি ২০১৭ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ৯ ডিসেম্বর ২০১৬। General Purpose [..] Julia lets you write UIs, statically compile your code, or even deploy it on a webserver.
↑ কখBiggs, Benjamin; McInerney, Ian; Kerrigan, Eric C.; Constantinides, George A. (২০২২)। "High-level Synthesis using the Julia Language"। arXiv:2201.11522 [cs.SE]। We present a prototype Julia HLS tool, written in Julia, that transforms Julia code to VHDL.উদ্ধৃতি টেমপ্লেট ইংরেজি প্যারামিটার ব্যবহার করেছে (link)
↑"Announcing Dash for Julia"। plotly (সংবাদ বিজ্ঞপ্তি) (ইংরেজি ভাষায়)। ২০২০-১০-২৬। ২ সেপ্টেম্বর ২০২১ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০২১-০৯-০২।উদ্ধৃতি টেমপ্লেট ইংরেজি প্যারামিটার ব্যবহার করেছে (link)
↑Anaya, Richard (২০১৯-০৪-২৮)। "How to create a multi-threaded HTTP server in Julia"। Medium (ইংরেজি ভাষায়)। ২৫ জুলাই ২০১৯ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০১৯-০৭-২৫। In summary, even though Julia lacks a multi-threaded server solution currently out of box, we can easily take advantage of its process distribution features and a highly popular load balancing tech to get full CPU utilization for HTTP handling.
↑Anthoff, David (২০১৯-০৬-০১)। "Node.js installation for julia"। GitHub। ৪ সেপ্টেম্বর ২০২৪ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০১৯-০৭-২৫।
↑দেখুন: docs.julialang.org/en/v1/manual/strings/ স্ট্রিং ইন্টারপোলেশন এবং string(greet, ", ", whom, ".\n") উদাহরণটি স্ট্রিং একত্র করার জন্য। জুলিয়াতে println এবং print ফাংশন রয়েছে, পাশাপাশি একটি @printf ম্যাক্রো (অর্থাৎ, ফাংশনের রূপে নয়) রয়েছে যা রন-টাইম ওভারহেড বাদ দেয় ফরম্যাটিং-এর জন্য (C-তে একই ফাংশনের বিপরীতে)।
↑"Julia Documentation"। JuliaLang.org। ১৭ ডিসেম্বর ২০১৬ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ১৮ নভেম্বর ২০১৪।
↑"Julia Downloads"। julialang.org। ২৬ জানুয়ারি ২০২১ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০১৯-০৫-১৭।
↑"julia/arm.md"। The Julia Language। ২০২১-১০-০৭। ১৫ মে ২০২২ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০২২-০৫-১৫। A list of known issues for ARM is available.
↑"JuliaGPU"। juliagpu.org। ২৩ মে ২০২০ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০২২-১১-১৬। Almost 300 packages rely directly or indirectly on Julia's GPU capabilities.
↑"Julia on TPUs"। JuliaTPU। ২০১৯-১১-২৬। ৩০ এপ্রিল ২০১৯ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০১৯-১১-২৯।
↑"Introducing Braket.jl - Quantum Computing with Julia"। Julia Community 🟣 (ইংরেজি ভাষায়)। ১৫ নভেম্বর ২০২২। ১৯ জুন ২০২৪ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০২৩-০২-২৩। Python SDK-এর প্রায় সব বৈশিষ্ট্য Julia-তে পুনঃপ্রয়োগ করা হয়েছে — যেগুলো নয় সেগুলোর জন্য আমরা একটি সহায়ক প্যাকেজ, PyBraket.jl, প্রদান করছি যা Julia অবজেক্টগুলিকে তাদের Python সমতুল্যে অনুবাদ করতে এবং Python SDK কল করতে সক্ষম করে।
↑"Julia for HEP Mini-workshop"। indico.cern.ch। ২৭ সেপ্টেম্বর ২০২১। ১১ আগস্ট ২০২২ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০২২-০৮-২৩। Julia and the first observation of Ω-_b → Ξ+_c K- π-
↑Mikhasenko, Misha (২০২২-০৭-২৯)। "ThreeBodyDecay"। GitHub। ২৩ আগস্ট ২০২২ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০২২-০৮-২৩।
↑Hobbs, Kerianne (ডিসেম্বর ২০২২)। "Year of Autonomy in Alaskan Glaciers, Flight, Earth Orbit, Cislunar Space and Mars"। Aerospace America Year in Review। পৃষ্ঠা 48। ১৯ জুন ২০২৪ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২৬ জানুয়ারি ২০২৩। ফ্লাইট পরীক্ষার দলটি একটি স্বয়ংক্রিয় উল্লম্ব টেকঅফ এবং ল্যান্ডিং যানবাহন প্রদর্শন করতে সক্ষম হয়েছে যা বোর্ডে উভয় বৈদ্যুতিক এবং প্রচলিত জ্বালানী প্রপালশন সিস্টেম সহ। Julia প্রোগ্রামিং ভাষাটি এমবেডেড হার্ডওয়্যারে প্রথমবারের মতো উড়ানো হয়েছে - অ্যালগরিদমগুলি আগাম কম্পাইল করা হয়েছিল।
↑"Case Study - JuliaHub"। juliahub.com। ১০ ফেব্রুয়ারি ২০২৩ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০২৩-০২-১০।
↑"Pumas-AI"। Pumas-AI (ইংরেজি ভাষায়)। ১০ ফেব্রুয়ারি ২০২৩ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০২৩-০২-১০।
↑"Release v1.3.0 · FRBNY-DSGE/DSGE.jl"। GitHub (ইংরেজি ভাষায়)। ৩ জানুয়ারি ২০২২ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০২২-০১-০৩। Model1002-এর নতুন সাবস্পেস যা COVID-19 শকের অনুমান করতে ব্যবহৃত হয়েছে
↑"Julia for Election Security" (ইংরেজি ভাষায়)। Julia Forem। ২৩ সেপ্টেম্বর ২০২২। ৪ সেপ্টেম্বর ২০২৪ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০২২-০৯-২৭।