برنامه نویسی کلوژر (clojure) چیست؟ کلوژر (به انگلیسی: Clojure) گویشی از زبان برنامهنویسی لیسپ است که توسط ریچ هیکی ایجاد شدهاست. این زبان، یک زبان همهمنظوره تابعی است. کد کلوژر به بایتکد ماشین مجازی جاوا کامپایل میشود، و بنابراین میتوانید از کتابخانههای جاوا استفاده کند. تا انتها این مقاله با ما همراه باشید…
کلوژر (clojure) چیست؟
کلوژر (به انگلیسی: Clojure) گویشی از زبان برنامهنویسی لیسپ است که توسط ریچ هیکی ایجاد شدهاست. این زبان، یک زبان همهمنظوره تابعی است. کد کلوژر به بایتکد ماشین مجازی جاوا کامپایل میشود، و بنابراین میتوانید از کتابخانههای جاوا استفاده کند. اکثر زبانهای مرسوم، ویژگیهای پایهای همروندی، یعنی ریسمانها و قفلها را در اختیار میگذارند. زبانهایی مانند جاوا، تعدادی کتابخانه کمکی نیز برای کنترل همروندی اضافه میکنند، ولی تغییری اساسی در چگونگی طراحی برنامههای همروند ایجاد نمیکنند، و تنها میزان کد مورد نیاز را کم میکنند. کلوژر بهصورت اساسی از همهٔ لحاظها متفاوت است. کلوژر ابزارهای اولیه، ریسمان و قفل، را در اختیار نمیگذارد. در عوض، مدلهای برنامهنویسی همروند در کلوژر کاملاً متفاوت است بطوریکه نیازی به ریسمانها و قفلها نیست.به علت اینکه دادهساختارهای اصلی زبان تغییرناپذیر هستند، میتوان آنها را بین ریسمانهای اجرا به اشتراک گذاشت
برخلاف جاوا اسکریپت و پایتون،Clojure شاید خیلی حتی بین برنامه نویسان هم نام شناخته شدهای نباشد. Clojure نوعی گویش از زبان برنامه نویسی Lisp است که تاریخ آن به 1950 بازمیگردد. عملکرد خاص این زبان با وظایف مختلف آن را به زبانی ایدهآل برای برنامه نویسی تابعی تبدیل کرده است. مانند دیگر گوشیههای Lisp، Clojure با کد مانند داده رفتار میکند. به این معنی که کد میتواند خودش را تغییر دهد. برخلاف دیگر لهجههای Lisp، Clojure روی پلتفرم جاوا اجرا میشود و در بایتکد JVM کامپایل شده است درنتیجه میتواند با کتابخانههای جاوا کار کند. برخلاف دیگر زبانهای این لیست Clojure به طور کلی یک زبان برنامه نویسی تابعی است، به این معنی که تا حد امکان به خصوص در ساختار داده از عدم تغییرپذیری پیروی میکند. Clojure انتظار ندارد که همهی برنامهها از نظر ریاضی قابل اثبات باشند اما تا حد امکان از توابع خالص استفاده میکند.
مثال از برنامه نویسی کلوژر (clojure)
مثال Hello World
1 |
(println "Hello world!") |
تعریف تابع
1 2 |
(defn square [x] (* x x)) |
کلوژر (clojure) جزو پردرآمدترین زبان های برنامه نویسی
به نمودار بالا توجه کنید. این نمودار پر درآمدترین زبانهای برنامه نویسی را در سطح جهان نشان میدهد. طبق گزارش Stackoverflow زبانهای Clojure ،F# ،GO ،Scala ،Elixir از پر درآمدترین زبانهای برنامهنویسی در سال ۲۰۱۹ در سطح دنیا بودهاند.
آیا Clojure زبان هوش مصنوعیست؟
“هوش مصنوعی” ابداع خود John McCarthy بود. زبان clojure هم که یکی از گویش های lisp محسوب میشه. پس کاملاً طبیعیه که ازش تو زمینۀ هوش مصنوعی زیاد استفاده بش، ولی به نظر من دلیل قدرت اصلی lisp (که باعث کاربردش تو هوش مصنوعی هم میشه) اینه که متکیه به حساب لاندا. اون چیزی که واقعاً شگفت انگیزه، lisp یا زبانهای برنامه نویسی مشابه دیگه نیستن، بلکه حساب لاندا ست. Haskell Curry معتقد بود زیرساخت تمام زبانهای طبیعی حساب لاندا ست. بعضی از ریاضیدانها معتقدن حساب لاندا در واقع همون زبان تفکره. حداقل اثبات شده که تمام ریاضیات و استدلالها رو میشه به وسیلۀ حساب لاندا (با قواعد واقعاً سادش) به طور خیلی دقیق بیان کرد.
ClojureScript چیست؟
ClojureScript نسخهای از زبان برنامهنویسی Clojure است که در JavaScript کامپایل میشود و یک زبان برنامهنویسی فانکشنالِ پایدار و پویا با مجموعهای غنی از دیتا استراکچرهای غیرقابلتغییر است. هدف اصلی از توسعهٔ این زبان، تسهیل فرآیند ساخت اپلیکیشنهای پیچیده با یک طراحی ساده است.
در واقع، کلوژراسکریپت یک Dialect از زبان برنامهنویسی Lisp است و یک زبان همهکاره با تأکید بر شیوۀ برنامهنویسی فانکشنال (تابعمحور) است که در جاوااسکریپت اجرا میشود (در اکوسیستم زبان برنامهنویسی Lisp، اکثر زبانهایی که از سینتکس دستورات و مفهوم مشابه این زبان استفاده میکنند به عنوان یک Dialect از این زبان در نظر گرفته میشوند.) کلوژراسکریپت یک زبان مدرن، فانکشنال و مبتنی بر دیتا اسکتراکچرهای غیرقابلتغییر با یک لایبرری استاندارد عالی است که باندلهای جامع و یکپارچۀ جاوااسکریپت را کامپایل میکند.
همچنین کلوژراسکریپت بر اساس زبان برنامهنویسی Clojure، ترکیبی از ظرافت و قابلیت Metaprogramming زبان Lisp را به اکوسیستم جاوااسکریپت اضافه میکند (اصلاح Metaprogramming یک روش برنامهنویسی است که در آن برنامههای کامپیوتری توانایی پردازش سایر برنامهها را به عنوان دادههای خود دارند؛ این بدان معنا است که یک برنامه را میتوان برای خواندن، تولید، آنالیز یا تبدیل به برنامههای دیگر طراحی کرد. حتی یک برنامۀ در حال اجرا میتواند در صورت نیاز سورسکد خود را تغییر دهد!) به عنوان نمونه سورسکد این زبان داریم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
(defn transform* [person] (-> person (assoc :hair-color :gray) (update :age inc))) (defn calculate* [] (->> (range 10) (filter odd? ,,,) (map #(* % %) ,,,) (reduce + ,,,))) (as-> [:foo :bar] v (map name v) (first v) (.substring v 1)) |
مشاهده جلسات قبل معرفی زبان های برنامه نویسی
- زبان برنامه نویسی سی و سی پلاس پلاس
- معرفی زبان برنامه نویسی پایتون
- Ruby چیست؟ بررسی زبان برنامه نویسی روبی
- زبان برنامه نویسی PHP چیست؟
- زبان برنامه نویسی Lua چیست؟
- کاتلین (Kotlin) چیست؟ توضیح زبان برنامه نویسی کاتلین
- Ada چیست؟ معرفی زبان برنامه نویسی Ada
- زبان برنامه نویسی COBOL چیست؟ شرح کامل COBOL
- معرفی زبان برنامه نویسی Cython
- زبان برنامه نویسی Elixir چیست؟ معرفی کامل Elixir (الیکسیر)
- کاملترین معرفی زبان برنامه نویسی Groovy
- زبان برنامه نویسی Rust چیست؟ کاملترین معرفی زبان برنامه نویسی Rust
- زبان برنامه نویسی Scala چیست؟ معرفی،ویژگی ها و کاربرد Scala
- معرفی زبان برنامه نویسی Haskell
- معرفی زبان برنامه نویسی Lisp (لیسپ)
- معرفی زبان برنامه نویسی Prolog
- کاملترین معرفی زبان برنامه نویسی جاوا
- معرفی کامل زبان برنامه نویسی Perl و نمونه کد Perl
- WinJS چیست؟ معرفی کتابخانه WinJS
- SignalR چیست؟
- Orchard چیست؟
- انگولار جی اس چیست؟ معرفی کامل فریم ورک متن باز Angular JS
- معرفی زبان اسکریپتی Sass
- ExpressJS چیست؟ همه چیز راجب ExpressJS
- فلاتر چیست؟ همه چیز راجب به برنامه نویسی فلاتر در سال 2020
- فریم ورک آیونیک چیست؟ (ionic سکو توسعه موبایل)
راستی! برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام سورس باران عضو شوید.
- منبع : سورس باران
- رمز فايل : www.sourcebaran.com
- انتشار: ۲۰ مرداد ۱۳۹۹
دسته بندی موضوعات
- آموزش ارز دیجیتال
- آموزش برنامه نویسی
- آموزش متنی برنامه نویسی
- اطلاعیه و سایر مطالب
- پروژه برنامه نویسی
- رپورتاژ
- فروشگاه
- فیلم های آموزشی
- ++C
- ADO.NET
- Adobe Flash
- Ajax
- AngularJS
- apache
- ARM
- Asp.Net
- ASP.NET MVC
- AVR
- Bootstrap
- CCNA
- CCNP
- CMD
- CSS
- Dreameaver
- EntityFramework
- Go
- HTML
- IOS
- jquery
- Linq
- Mysql
- Oracle
- PHP
- PHPMyAdmin
- Rational Rose
- silver light
- SQL Server
- Stimulsoft Reports
- Telerik
- UML
- VB.NET&VB6
- WPF
- Xml
- آموزش های پروژه محور
- اتوکد
- الگوریتم تقریبی
- امنیت
- اندروید
- اندروید استودیو
- بک ترک
- بیسیک فور اندروید
- پایتون
- جاوا
- جاوا اسکریپت
- جوملا
- دلفی
- دوره های رایگان پیشنهادی
- زامارین
- سئو
- ساخت CMS
- سی شارپ
- شبکه و مجازی سازی
- طراحی الگوریتم
- طراحی بازی
- طراحی وب
- فتوشاپ
- فریم ورک codeigniter
- فلاتر
- کانستراکت
- کریستال ریپورت
- لاراول
- معماری کامپیوتر
- مهندسی اینترنت
- هوش مصنوعی
- یونیتی
- کتاب های آموزشی
- Android
- ASP.NET
- AVR
- LINQ
- php
- Workflow
- اچ تی ام ال
- بانک اطلاعاتی
- برنامه نویسی سوکت
- برنامه نویسی موبایل
- پاسکال
- پایان نامه
- پایتون
- جاوا
- جاوا اسکریپت
- جی کوئری
- داده کاوی
- دلفی
- رباتیک
- سئو
- سایر کتاب ها
- سخت افزار
- سی اس اس
- سی پلاس پلاس
- سی شارپ
- طراحی الگوریتم
- فتوشاپ
- مقاله
- مهندسی نرم افزار
- هک و امنیت
- هوش مصنوعی
- ویژوال بیسیک
- نرم افزار و ابزار برنامه نویسی
- وردپرس