জুলিয়া (প্রোগ্রামিং ভাষা)

জুলিয়া একটি উচ্চ পর্যায়ের প্রোগ্রামিং ভাষা, যা উচ্চ দক্ষতা সম্পন্ন এবং গতিশীল হিসেবে গণ্য করা হচ্ছে। এটি জেনারেল পারপাস ল্যাঙ্গুয়েজ বা সর্ব ক্ষেত্রে ব্যাবহার্য প্রোগ্রামিং ভাষা হলেও গাণিতিক বিশ্লেষণ এবং গাণিতিক বিজ্ঞানে বিশেষভাবে ব্যাবহার করা হয়। 
জুলিয়ার মূল বৈশিষ্ট হল প্যারাম্যাট্রিক পলিমর্ফিজম এবং ডাইনামিক প্রোগ্রামিং, যার ভিত্তি হল মাল্টিপল ডিস্প্যাচ।
ডিফল্টভাবে, জুলিয়া স্ক্রিপ্টিং ভাষার মতো রানটাইম ব্যবহার করে চালানো হয় এবং এটি ইন্টার‌্যাকশন বা REPL (Read-Eval-Print Loop) সমর্থন করে, তবে জুলিয়া প্রোগ্রাম বা সোর্স কোড ব্যবহারকারীদের কাছে একটি প্রস্তুত ইনস্টল/রান ফাইলে পাঠানো সম্ভব, যা দ্রুত তৈরি করা যায় এবং কোন পূর্বে ইনস্টলেশন প্রয়োজন হয় না। জুলিয়া প্রোগ্রামগুলো (আলাদাভাবে) বাইনারি এক্সিকিউটেবল ফাইলেও কম্পাইল করা যায়, যা সোর্স কোড সরবরাহ না করেই বিতরণ করার অনুমতি দেয়, এবং জুলিয়া ১.১২-এর সাথে এই এক্সিকিউটেবল ফাইলগুলো আরও ছোট আকারে পাওয়া যায়। গতি বাড়ানোর জন্য এমন কম্পাইলেশন প্রয়োজন হয় না, যদিও এটি কনস্ট্যান্ট-ফ্যাক্টর স্টার্টআপ খরচ কমাতে পারে, কারণ জুলিয়া ইন্টার‌অ্যাকটিভলি চালানোর সময়ও কম্পাইল করা হয়, তবে এটি সোর্স কোড লুকানোর জন্য সহায়ক হতে পারে। ভাষার বৈশিষ্ট্যগুলো আলাদাভাবে কম্পাইল করা যায়, ফলে জুলিয়া রানটাইম সহ বা রানটাইম ছাড়াই (যা ছোট এক্সিকিউটেবল এবং লাইব্রেরির জন্য অনুমতি দেয় তবে ক্ষমতা সীমিত করে) ব্যবহার করা যায়।
জুলিয়া প্রোগ্রামগুলো অন্যান্য ভাষার লাইব্রেরি পুনঃব্যবহার করতে পারে, যেমন সি বা রাস্ট লাইব্রেরি কল করা, এবং জুলিয়া লাইব্রেরিগুলো অন্য ভাষা থেকেও কল করা যেতে পারে, যেমন পাইথন এবং আর, এবং বেশ কয়েকটি জুলিয়া প্যাকেজ এই ভাষাগুলো থেকে সহজে অ্যাক্সেসযোগ্য করা হয়েছে, যেগুলো সংশ্লিষ্ট জুলিয়া প্যাকেজের পাইথন ও আর লাইব্রেরি হিসেবে পাওয়া যায়। উভয় দিকেই কলিং সুবিধাটি অনেক ভাষার জন্য বাস্তবায়িত হয়েছে, যেমন এই সবগুলো ভাষার জন্য।
জুলিয়ার ভিজুয়াল স্টুডিও কোড এক্সটেনশনটি একটি পূর্ণাঙ্গ IDE (Integrated Development Environment) সরবরাহ করে যা ডিবাগিং, লিন্টিং, এবং প্রোফাইলিং সমর্থন করে।
জুলিয়া প্রোগ্রামিং ভাষার কোডিং এর উদাহারণ:
year = 2007;
if year >= 2006
else println("ভুল জন্ম আর্টসেলের সবচেয়ে জোস গান")
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 সংস্করণ নেই। জুলিয়া ১.১১ নতুন একটি codice_1 কীওয়ার্ড যুক্ত করেছে যা নিরাপদ পাবলিক API নির্দেশ করতে ব্যবহৃত হয় (জুলিয়া ব্যবহারকারীদের পরামর্শ দেয়া হয় এই API ব্যবহার করতে, এবং জুলিয়া বা প্যাকেজের অভ্যন্তরীণ বিষয় নয়, এবং প্যাকেজ লেখকদের এই কীওয়ার্ড ব্যবহার করতে পরামর্শ দেয়া হয়েছে, সাধারণত codice_2 ম্যাক্রো দ্বারা, পুরোনো জুলিয়া সংস্করণগুলির সাথে, অন্তত LTS সংস্করণের জন্য, সামঞ্জস্য বজায় রাখার জন্য)। জুলিয়া ১.১১.১-এর স্টার্টআপের গতি উন্নত করা হয়েছে (১.১১.০-এর একটি অবনমন ছিল), এবং ১.১০-এর তুলনায়ও, যা কিছু বেঞ্চমার্কে গুরুত্বপূর্ণ হতে পারে।
কিছু ব্যবহারকারী ১.১১-এ আপগ্রেড করার বিষয়টি স্থগিত রাখতে পারেন (যেমন যারা R থেকে জুলিয়া কল করছেন), কারণ পরিচিত সাময়িক প্যাকেজ অসামঞ্জস্যতা রয়েছে।
অনেক ছোট বাইনারি এক্সিকিউটেবল তৈরি করা সম্ভব codice_3 দিয়ে, যা শুধুমাত্র আসন্ন জুলিয়া ১.১২ (বর্তমান "নাইটলি" সংস্করণ) এ পাওয়া যায়।
২০১৪ সাল থেকে, জুলিয়া কমিউনিটি বার্ষিক জুলিয়া কনফারেন্স আয়োজন করে যা ডেভেলপার এবং ব্যবহারকারীদের উপর কেন্দ্রীভূত। প্রথম JuliaCon শিকাগোতে অনুষ্ঠিত হয়েছিল এবং এটি সম্মেলনের বার্ষিক আয়োজনের সূচনা করে। ২০১৪ সাল থেকে, এই সম্মেলন বিভিন্ন স্থানে অনুষ্ঠিত হয়েছে, যেমন MIT এবং ইউনিভার্সিটি অফ মেরিল্যান্ড, বাল্টিমোর। ইভেন্টের দর্শকসংখ্যা কয়েক ডজন থেকে বেড়ে ২০২০ সালে JuliaCon-এ ২৮,৯০০ জন অনন্য দর্শকে পৌঁছে, যা ভার্চুয়ালি অনুষ্ঠিত হয়েছিল। JuliaCon 2021-ও ভার্চুয়ালি অনুষ্ঠিত হয়েছিল, যেখানে IEEE 754 ভাসমান বিন্দু স্ট্যান্ডার্ডের প্রধান স্থপতি উইলিয়াম কাহান (যা প্রায় সব CPU এবং ভাষায় ব্যবহৃত হয়, যার মধ্যে জুলিয়াও রয়েছে), জ্যান ভিটেক, শেরি লি, এবং পাইটর্চের সহ-স্রষ্টা সৌমিথ চিন্তালা প্রধান বক্তা হিসেবে ছিলেন। JuliaCon ২০২১-এ ৪৩,০০০ জন অনন্য দর্শক ছিল এবং ৩০০টিরও বেশি উপস্থাপনা ছিল (পুরোনো বছরের উপস্থাপনাগুলোও বিনামূল্যে উপলব্ধ)। JuliaCon ২০২২ জুলাই ২৭ থেকে ২৯ তারিখে ভার্চুয়ালভাবে অনুষ্ঠিত হবে এবং প্রথমবারের মতো একাধিক ভাষায়, শুধু ইংরেজিতে নয়।
জুলিয়া ভাষা ২০১৪ সালে "নামফোকাস"-এর অর্থনৈতিক স্পন্সরশিপ প্রকল্পে অন্তর্ভুক্ত হয়, যা প্রকল্পটির দীর্ঘমেয়াদী স্থায়িত্ব নিশ্চিত করার প্রচেষ্টা হিসেবে গৃহীত হয়। MIT লিংকন ল্যাবরেটরির জেরেমি কেপনার ছিলেন জুলিয়া প্রকল্পের প্রাথমিক স্পন্সর। এছাড়া, গর্ডন এবং বেটি মুর ফাউন্ডেশন, আলফ্রেড পি. স্লোন ফাউন্ডেশন, ইন্টেল, এবং ন্যাশনাল সায়েন্স ফাউন্ডেশন , ডার্পা (DARPA), ন্যাশনাল ইনস্টিটিউটস অফ হেলথ, নাসা (NASA), এবং ফেডারেল এভিয়েশন অ্যাডমিনিস্ট্রেশন-এর মতো সংস্থাগুলোর তহবিল জুলিয়ার বিকাশে গুরুত্বপূর্ণ ভূমিকা পালন করেছে। ফায়ারফক্স ওয়েব ব্রাউজারের নির্মাতা মজিলা, ২০১৯ সালের প্রথমার্ধে গবেষণা অনুদানের মাধ্যমে "জুলিয়াকে ব্রাউজারে নিয়ে আসা" প্রকল্পে "জুলিয়া দলের একজন সদস্যকে" স্পন্সর করে, অর্থাৎ Firefox এবং অন্যান্য ওয়েব ব্রাউজারে জুলিয়াকে সংহত করার জন্য। জুলিয়া ভাষাটি গিটহাবে ব্যক্তিগত অনুদাতাদের দ্বারাও সমর্থিত।
জুলিয়া একটি সাধারণ উদ্দেশ্যের প্রোগ্রামিং ভাষা (অল পারপাস প্রোগ্রামিং ল্যাঙ্গুয়েজ), যা মূলত সংখ্যাসম্পর্কিত ও প্রযুক্তিগত গণনার জন্য ডিজাইন করা হয়েছিল। এটি লো-লেভেল সিস্টেম প্রোগ্রামিং, স্পেসিফিকেশন ভাষা, হার্ডওয়্যার যেমন FPGA-এর জন্য উচ্চ-স্তরের সংশ্লেষণ (HLS) টুল,<ref name = "HLS/FPGA"></ref> এবং ওয়েব প্রোগ্রামিং উভয় সার্ভার এবং ক্লায়েন্ট সাইডে ব্যবহৃত হয়।
ভাষার প্রধান বৈশিষ্ট্যসমূহ:
ডিফল্টভাবে, জুলিয়া রানটাইম প্রি-ইনস্টল থাকতে হবে কারণ ব্যবহারকারী-প্রদত্ত সোর্স কোড রান করে। অন্যভাবে, 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) কমন লিস্প-এ মাল্টিপল ডিসপ্যাচ যোগ করে, সেখানে সব ফাংশন জেনেরিক ফাংশন নয়।
জুলিয়া, ডিলান, এবং ফোর্ট্রেসে, এক্সটেনসিবিলিটি ডিফল্ট হিসেবে অন্তর্ভুক্ত এবং সিস্টেমের বিল্ট-ইন ফাংশনগুলো সবই জেনেরিক এবং এক্সটেনসিবল। ডিলানে, জুলিয়ার মতো মাল্টিপল ডিসপ্যাচও একটি মৌলিক বৈশিষ্ট্য; সকল ব্যবহারকারী-সংজ্ঞায়িত ফাংশন এবং এমনকি মৌলিক বিল্ট-ইন অপারেশন যেমন codice_5 ও জেনেরিক। তবে, ডিলানের টাইপ সিস্টেম সম্পূর্ণরূপে প্যারামেট্রিক টাইপ সমর্থন করে না, যা মেশিন লার্নিং লিনিয়েজ এর ভাষাগুলোর মধ্যে বেশি দেখা যায়। ডিফল্টভাবে, CLOS কমন লিস্পের প্যারামেট্রিক টাইপগুলোর জন্য ডিসপ্যাচ সমর্থন করে না; এমন উন্নত ডিসপ্যাচ অর্থনীতি শুধুমাত্র CLOS মেটা অবজেক্ট প্রোটোকলের মাধ্যমে এক্সটেনশন হিসেবে যোগ করা যায়। ডিজাইনের অভিসারমূলক উপায়ে, ফোর্ট্রেসও প্যারামেট্রিক টাইপের উপর মাল্টিপল ডিসপ্যাচ সমর্থন করে; তবে, জুলিয়ার মতো ডাইনামিক না হয়ে, ফোর্ট্রেস স্ট্যাটিক টাইপড, যার পৃথক কম্পাইলিং এবং এক্সিকিউটিং ধাপ রয়েছে। নিচের টেবিলে ভাষার বৈশিষ্ট্যগুলো সংক্ষেপে উল্লেখ করা হলো:
জুলিয়ার এক্সটেনসিবিলিটির একটি উদাহরণ হলো Unitful.jl প্যাকেজ, যা ভাষায় শারীরিক পরিমাপ এককসমূহের জন্য সমর্থন যোগ করে।
জুলিয়ায় বিল্ট-ইন সাপোর্ট রয়েছে C বা Fortran ভাষার লাইব্রেরিগুলোকে codice_6 ম্যাক্রো ব্যবহার করে কল করার জন্য। অতিরিক্ত লাইব্রেরিগুলোর মাধ্যমে ব্যবহারকারীরা Python, R, C++, Java, এবং SQL-এর সঙ্গে কাজ করতে পারেন।
জুলিয়াকে PackageCompiler.jl ব্যবহার করে বাইনারি এক্সিকিউটেবল হিসেবে কম্পাইল করা যায়। ছোট আকারের এক্সিকিউটেবল তৈরি করার জন্য StaticCompiler.jl ব্যবহার করে ভাষার একটি স্ট্যাটিক সাবসেটেও লেখা যেতে পারে, যা রানটাইম ডিস্প্যাচ সমর্থন করে না (এছাড়াও এটি রানটাইম এবং গারবেজ কালেকশনকেও বাদ দেয়)।
জুলিয়ার অফিসিয়াল ডিস্ট্রিবিউশনে একটি ইন্টারেক্টিভ কমান্ড-লাইন read-eval-print loop (REPL) অন্তর্ভুক্ত রয়েছে, যা একটি সার্চেবল হিস্ট্রি, ট্যাব কমপ্লিশন, এবং ডেডিকেটেড হেল্প ও শেল মোড সহ সরবরাহ করা হয়, যা কোড দ্রুত পরীক্ষার জন্য ব্যবহার করা যায়। নিচের অংশে একটি নমুনা সেশন দেখানো হয়েছে যেখানে println স্বয়ংক্রিয়ভাবে স্ট্রিংগুলোকে একত্র করে:
REPL ব্যবহারকারীদের সিস্টেম শেল এবং হেল্প মোডে অ্যাক্সেস প্রদান করে, যথাক্রমে প্রম্পটের পরে codice_7 বা codice_8 প্রেস করার মাধ্যমে। এটি কমান্ডের হিস্ট্রি সংরক্ষণ করে, এমনকি সেশনগুলোর মধ্যেও। কোড জুলিয়ার ইন্টারেক্টিভ সেশনের মধ্যে পরীক্ষা করা যায় অথবা codice_9 এক্সটেনশনের ফাইলে সংরক্ষণ করে কমান্ড লাইনে রান করা যায় এইভাবে:
জুলিয়া UTF-8 এবং LaTeX কোড ব্যবহার করে, যা বিভিন্ন অপারেটরের জন্য সাধারণ গাণিতিক প্রতীকসমূহ সমর্থন করে, যেমন ∈ ব্যবহার করে in অপারেটর, যা codice_10 টাইপ করার পর 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 এবং প্রতিটি মার্কিন জাতীয় শক্তি ল্যাবরেটরি সহ বিভিন্ন সরকারি সংস্থার দ্বারাও ব্যবহৃত হয়েছে।
The Climate Modeling Alliance, জলবায়ু পরিবর্তন মডেলিংয়ের জন্য
ব্রাজিলিয়ান National Institute for Space Research (INPE), মহাকাশ মিশন এবং উপগ্রহের সিমুলেশনের জন্য Julia ব্যবহার করে
ফার্মাসিউটিক্যাল শিল্পে ওষুধ উন্নয়নের জন্য Julia ব্যাপকভাবে ব্যবহৃত হয় এবং Moderna, Pfizer, AstraZeneca, Procter & Gamble, এবং United Therapeutics-এর মতো কোম্পানিগুলো এটি গ্রহণ করেছে।