Common Lisp یا Clojure؟


#21

درسته، ساده بودن با آسون بودن خیلی فرق داره. منظورتو درست متوجه شدم.
من الان بیشتر از همه وقتمو دارم رو django میزارم، به عنوان یه فریمورک وب و راه اصلی درآمدم در آینده. و چیز سختی توش ندیدم. صرفاً باید یه سری چیزا رو حفظ کنی وگرنه الگوریتم پیچیده ای نداره.
در کنارش آمار و احتمالات هم میخونم و هر جا به چیزی برسم که بشه تبدیل به یه الگوریتمش کرد، اینکارو میکنم و بعد هم یه تابع تو پایتون براش تعریف میکنم و سیوش میکنم که بعداً اگه فرصتی پیش اومد بتونم data science هم کار کنم.

میخواستم یه زبان در کنار پایتون یاد بگیرم. بعد اینجا اسم lisp رو شنیدم و یکم راجع بش تحقیق کردم. هدفم اینه در مرحله اول clojure رو به عنوان زبان دوم یاد بگیرم و فقط تو محاسبه ها ازش استفاده کنم. ولی با توجه به چیزایی که راجع بش از شما و بقیه شنیدم، مثل اینکه پتانسیل اینو داره که ازش تو ساختن وب سایت و تو data science به عنوان زبان اصلی استفاده کنم (درسته؟). اگه بخونم و ببینم باش راحتم خوب به عنوان زبان اصلیم ادامش میدم و پایتون هم که در کنارش کار میکنم.


#22

من درمورد اینکه شما چقدر روی ساختن یک پایه قوی کار کردید و اینکه چه زبان هایی رو یاد گرفتید اطلاعات دقیق ندارم ولی این رو مطمئن هستم که چیزی که اهمیت داره خود زبان نیست.

برای یادگیری یک زبان جدید، پارادایم اون زبان جدید مهم هستش، چون پارادایم یعنی نحوه تفکر و تغییر دادن نحوه تفکر اونم بعد از یه مدت زیاد، کار شدنی ولی سختیه :

  • اگه زبان جدید هم پارادایم با زبانی که قبلا یاد گرفتید باشه:

–> در این حالت یادگیری برای شما راحته.

مثال :

  • زبان های Smalltalk, ++C, Ruby, Python, Java, #C همگی از پارادایم های Imperative و OOP پشتیبانی می کنن و یادگیری اینها ساده تر میشه اگه زبان اول شما هم یکی از اینها باشه.
  • زبان های Haskell, Elixir, Erlang, #F, Clojure همگی از پارادایم Functional پشتیبانی می کنن و یادگیری اینها ساده تر میشه اگه زبان اول شما هم یکی از اینها باشه.
  • زبان هایی مثل Prolog, Mercury از پارادایم Logic پشتیبانی می کنن و یادگیری اینها ساده تر میشه اگه زبان اول شما هم یکی از اینها باشه.
  • ولی اگه زبان جدید هم پارادایم با زبانی که قبلا یاد گرفتید نباشه:

–> در این حالت یادگیری برای شما سخت تر میشه چون نحوه تفکر راجع به حل مسئله تغییر میکنه.

خلاصه اینکه به پارادایم زبان ها و نحوه تفکر راجع به حل مسئله توجه داشته باشی بهتره.
حتی کسانی که سالها تجربه برنامه نویسی با زبان های OOP و Imperative رو داشتن هم وقتی خواستن یه زبان کاملا Functional مثل Haskell رو یاد بگیرن کار راحتی نداشتن، حتی شاید مثل یک مبتدی کامل به نظر بیان، چون نحوه تفکر راجع به حل مسئله عوض شده.

Common Lisp و Elixir زبان های مورد علاقه خود منن. اگه تصمیم گرفتی دنبال یادگیری Lisp بری این رو توجه کن که Lisp اصلا یک دنیای دیگس، حتی با زبان های Functional هم آبش تو یه جوب نمیره کامل.
پیشنهاد من برای قدم اول کتاب بی نظیر زیر هستش :
https://www.amazon.com/Common-LISP-Introduction-Computation-Engineering/dp/0486498204

ولی اگه میخوای یه زبان با پارادایم Functional رو یاد بگیری پیشنهاد من Haskell و Elixir هستش، البته یادگیری Elixir خیلی روان تر و ساده تر هستش از دید من.


#23

خیلی ممنون برای اینکه مسئله رو اینقدر شفاف توضیح دادی.


#24

این بخش از متن رو باید با طلا بنویسن!
سینتکس اصلا مهم نیست. هر کسی میتونه تو یک یا چند روز سینتکس یه زبان رو یاد بگیره حتی اگه اصلا برنامه نویسی نکرده باشه. هر کسی میتونه یه سری کد حفظ کنه و شروع کنه به برنامه نویسی توی یه زبان.
ولی تفاوت برنامه نویس حرفه‌ای با بقیه فقط تو نحوه‌ی تفکرشه.


#25

خوشحالم که مفید بود. :slight_smile:


#26

در تکمیل فرمایش های دوست @solynho عزیز این رو عرض کنم که وقتی می خواید یه زبان جدید یاد بگیرید خیلی مهم هست که مقایسه انجام ندید و اون زبان رو با ذهن تازه یاد بگیرید. منظورم اینه که هرچیزی در مورد زبان هایی که قبلا بلدید رو بزارید کنار، زبان جدید رو یاد بگیرید. خط فکریش و دلایل ساختش رو مطالعه کنید و وقتی یادش گرفتید اون موقع اگر خواستید مقایسه کنید. اینجوری درست یاد می گیرید و زود در مورد زبانی که هنوز نمی دونین قضاوت نمی کنین.