Leiningen?
Maven repo download speed?
Clojure stack trace?
Java-Clojure interop and its type syntax?
JVM startup time?
Missing parentheses?
JVM 8 and 12 incompatibility?
خیر
جدا از شوخی این چیزا که نوشتی اغلب درمورد jvm هست، که با توجه به مزایای jvm آنقدر مهم نیست مگر اینکه یک دلیل خیلی خاص داشته باشی
مثلا زمان شروع برنامه خیلی اهمیت داشته باشه یا مثلا نمیتونی garbage collector داشته باشی
خیلی ممنون آخه خیلی زیاد میشنوم مثلا از سختی ردیابی پشته ها در کلوژر ایراد میگیرن ، البته در فروم های مختلف نظرات رو دنبال میکنم خودم کلوژریست نیستم ، و میخوام بعنوان یک زبان فانکشنال انتخابش کنم اما مرددم بین چند گزینه ، مثلا الیکسیر و اف شارپ و کلوژر یا حتی اوکمل !
این روم رو تازه واردش شدم و بنظرم مکان واقعا عالی و تخصصی برای اشتراک گذاری اطلاعات هست
ممنون میشم راهنمایبم کنید که کدام یکی از این زبان ها برای یادگیری مناسب تر هستند
ببخشید رفتید؟
این کجاش بده؟ تمامش، زیر تا رو، معرکست!
کنده؟ من کندی حس نمیکنم! نسبت به چی کنده؟
این برای چندسال پیشه. چون وضعیت خیلی بهتر شده!
البته موافقم که وقتی یه اروری پیش میاد، یه stack trace بزرگ نشون میده ولی چیزی نیست که توی زبانهای دیگه نبینیم! به هرحال کامپایلر باید مسیر کدهایی که همدیگه رو صدا زدن تا به ارور ختم شده به ما نشون بده دیگه!
توی هر خط هم اسم فایل رو نوشته، احتمالا مشکل از کدهای لایبرری که استفاده میکنیم نیست، فقط کافیه فایلهای خودمونو چک کنیم. (یه IDE خوب، خیلی کمک میکنه)
خب از دید یه برنامهنویس کلوژر، وقتی میخوایم interop انجام بدیم با java یا js و از لایبرریهای اونا استفاده کنیم، یه کم کدمون بیریخت میشه (مگر اینکه یه wrapper کوچیک برای کار خودمون بنویسیم). یعنی بیریختتر از کدهای معمولی که توی کلوژر مینویسیم.
اگه از دید برنامهنویس جاوا بخوایم بهش نگاه کنیم، خیلی هم خوشگله! سینتکسش همچنان قشنگتر از سینتکس شلوغ و پر از boilerplate جاواست.
مشکل از JVM هست، نه کلوژر. البته در اکثر مواقع میتونیم پروژمون رو با GraalVM کامپایل کنیم به Native Image که سرعت startup و اجرای برنامه، بیشتر میشه. (برخی از لایبرریهای java یه کم مشکل-دار نوشته شدن، این لایبرریها اگه توی پروزهی کلوژر یا جاوا یا کاتلین یا… استفاده بشه، graalvm نمیتونه کامپایلش کنه)
و درکل، این کندی اجرا، وقتی به چشم میاد که بخوایم اپلیکیشن تحت ترمینال بنویسیم. مثلا یه چیزی تو مایههای cURL بسازیم، یه چیزی که باز بشه یه کار چند میلیثانیهای انجام بده و بسته بشه.
کلوژر اصلا برای همچین کاری ساخته نشده.
پرانتزها رو Editor/IDE برامون میبنده. ما اصلا پرانتزها رو نمیبینیم.
مگه شما با nano یا windows notepad کار میکنید؟!
درمورد این نظری ندارم. یعنی تا حالا بهش برخورد نکردم و نمیدونم منظورتون دقیقا چیه.
کلوژر، یکی از گویشهای LISP هست، دونستن یه لیسپ، شمارو برنامهنویس بهتری میکنه. (با اختصار، از اریک ریموند)
از بین بقیهی زبانهایی که اشاره کردید، به نظر من فقط Elixir منطقیه.
بستگی به شما داره با چند زبان کارکنید ببینید کدام برای شما جذاب تره
البته اینم بگم که haskell هم عالیه.
بازار کار نداره، ولی یادگیریش برای هر برنامهنویسی مفیده (خودم هنوز نرفتم سراغش)
خیلی ممنون بابت پاسخ هاتون
یک سوال دیگر آینده کلوژر رو چطور میبینید؟
منظورم از آینده مثلا تا ده سال آینده ست
سیر صعودی خواهد داشت یا نزولی؟؟
یک سوال دیگ هم داشتم اگر بخوایم بین زبان کلوژر و الیکسیر مزایا و معایب هر کدوم نسبت به هم رو بنویسیم اونها چی هستند؟
منظورم یک جور قیاس هست
و آیا الیکسیر هم زبانی لیسپ گونه هست؟
خیلی ممنون بابت پاسخ هاتون
قسمت اول گفته تون فک کنم چون سریع نیست!
در مورد باقی موارد باهاتون موافقم
در مورد قسمت اخر بنظرتون کدام آینده بهتری دارن؟
الیکسیر زبان لیسپی نیست. روی vm ارلنگ اجرا می شه. کلوژر و الیکسیر هردو رود صعودی خواهند داشت اما نسبت به زبان های oo هم چنان بسیار کوچک تر خواهند بود. این دو زبان نمی شه خیلی باهم مقایسه کرد چون یکی lisp با jvm هستش یکی شبیه روبی روی beam. خودت می دونی که تو برنامه ای که می خواهی بنویسی کدوم بهتر جواب میده.
Lisp یک سری قدرت بهت می ده که الیکسیر نداره، jvm کتابخانه های خیلی خوبی داره.
الیکسیر با actor model میتونی برنامه هایی بنویسی که نقص تحمل کنه.
به قول معروف مقایسه سیب با پرتقاله
نمیدونم چرا تو یکی از فروم های همین جا اقای توماجگفته بود الیکسیر هم لیسپ گونه است
نمیدونم چرا تو یکی از فروم های همین جا اقای توماجگفته بود الیکسیر هم لیسپ گونه است
خب leiningen هم داره روی jvm ران میشه. سرعت شروعش مثل هر برنامهی jvm-based دیگهای، پایینه.
هردوشون جزو تکنولوژیهایی هستن که هرکسی سراغش نمیره.
پس اگه منتظرید تبدیل بشه به ۱۰ زبان برنامهنویسی که بیشترین برنامهنویس رو داره، هیچوقت اتفاق نمیفته.
یه چیزی که همه سراغش میرن دلیل نمیشه خوب باشه، یه چیزی هم که خوب هست، حتما اینطور نیست که همه برن سمتش. خوب بودن یه چیزه، طرفدار داشتن یه چیز دیگه. فقط هم مربوط به دنیای کامپیوتر نیست.
لیسپ، خداست چیزهایی سال ۱۹۶۰ توی لیسپ قرار گرفتن که هنوز برای بقیهی زبونا نزدیک-به-غیرممکنه.
توی سالهای اخیر، زبانهای زیادی ادای لیسپ رو درآوردن و زبانهای زیادی توی طراحیشون از لیسپ اثر گرفتن. (فکر کنم paul graham بود که میگفت «پایتون حتی چیزهایی که به اشتباه توی لیسپ قرارداده شده هم کپی کرده»)
من فقط زبانی رو «لیسپ» به حساب میارم که از استاندارد لیسپ پیروی کرده باشه، نه اینکه یه بخشهاییش رو از لیسپ تاثیر گرفته باشه.
لیست گویشهای لیسپ رو میتونید در ویکیپدیا ببینید.
اگه میخواید چندتا لیسپ رو امتحان کنید، من اینا رو پیشنهاد میکنم (به همین ترتیب):
Clojure (یه لیسپ با طراحی مدرن، بهترین لیسپ تا اینجای تاریخ)
Scheme (یه لیسپ خیلی سبک که هستهی خیلی کوچیکی داره و تا جایی که میدونم بهترین Tail Call Optimization رو داره توی MIT از روی کتاب SICP تدریس میشه)
Racket (بچهی scheme هست، خوب طراحی شده و ابزارهای زیادی توی خودش داره)
Common Lisp (بابای همشونه کامپایلرهای زیادی براش طراحی شده، من کامپایلر SBCL رو پیشنهاد میکنم. به خاطر قدیمی بودن، یه کم شلخته شده و هرچیزی رو توش implement کردن. از اینش زیاد خوشم نمیاد. لیسپ باید تروتمیز باشه مثل کلوژر!)
eLisp (یکی از مضخرفترین زبانهاییه که میشناسم ولی Emacs رو باهاش نوشتن. پس اگه میخواید emacs رو به عنوان ابزار توسعهی خودتون انتخاب کنید، یه کم eLisp یاد بگیرید که خیلی به درد میخوره و خیلی هم کیف میده!)
راکت چطوریع ؟ شنیدم برای هوش مصنوعی ازش استفادت میشع؟
Elisp منظورت هموت le lisp هست؟؟ پشتیبانیش تا ۲۰۲۰ هستش بنظر زبانی نمیاد که منسوخ شده باشه
چرا زبان مذخرفی هست ؟؟
از چه لحاظ؟
Scheme برای چه مواردی کاربرد داره؟
خیلی ممنونم پس لیسپ گونه نیست ، صرفا ممکنه مواردی از از لیسپ کپی برداری کرده باشه ب اصطلاح درست گفتم؟
همهی زبانها برای هوش مصنوعی استفاده میشن. از زبانهای لیسپی، میشه برای ساخت هوش مصنوعی به روش Expert systems استفاده کرد که بعید میدونم منظور شما این باشه. احتمالا یه لایبرری یا همچین چیزی داره برای neural networks.
خب، پایتون هم همچین چیزی داره!
نه. منظورم Emacs Lisp هست. مورد استفادش فقط داخل خود Emacs هست و ۲تا مشکل بزرگ داره:
- Namespace نداره
- multi-threading نداره (فکر کنم داره، ولی زیاد به درد نمیخوره)
تا جایی که میدونم، فقط Clojure هست که الآن بازار کار داره (و احتمالا Racket). بقیهی لیسپها فقط ارزش یادگیری دارن چون بعد از یادگرفتنشون دیگه اون برنامهنویس سابق نمیشید
جایی ندیدم برنامهنویس Common Lisp یا Scheme استخدام کنن.
اگسپرت سیستم منظورتون استفاده از بانک دانش استنتاجی یا بعبارتی لوگیک پروگرمینگ هست؟؟
فارسی بلد نیستم!