PDA

View Full Version : سوال: زبان های اسکریپتی چه زبان هایی هستند؟



one hacker alone
جمعه 12 آبان 1391, 01:34 صبح
با یاد خدا
سلام دوستان
من یه سوالی خیلی وقته ذهنم رو مشغول کرده و اون جایگاه زبان های اسکریپتی هست
اینکه به چه زبان هایی اسکریپتی میگن؟
مثلا زبان سی و ++ زبان سیستمی هستن
و زبان هایی مانند asp,php,jsp زبان های تحت وب
و زبان هایی مانند وی بی و دلفی زبان هایی برای نوشتن برنامه های دسکتاب هستن
اما هنوز با جایگاه زبان های اسکریپتی مشکل دارم اینکه کجاها کاربرد دارن دقیقا چون نه میشه گفت برای وب هستن نه میشه گفت برای نوشتن برنامه های دسکتاپ
از طرفی من با جایگاه زبان هایی مانند جاوااسکریپت و وی بی اسکریپت اشنا هستن اما انتظار ندارم که شما بگین زبان هایی مانند پیتون و روبی و پرل هم در این جایگاه هستن چون تصورش سخته
پس اینا کجا استفاده میشن؟

eshpilen
دوشنبه 15 آبان 1391, 11:09 صبح
زبان اسکریپتی بوسیلهء یک مفسر اجرا میشه که سورس برنامه رو میخونه و اجرا میکنه.
زبان اسکریپتی میتونه در هر حیطه ای استفاده بشه. وب و دسکتاپ. مثلا PHP زبان اسکریپتی ای است که در وب کاربرد زیادی داره، ولی برای دسکتاپ هم میشه ازش استفاده کرد. پایتون هم همینطور.

خب شما حالا کجاش مشکل داری؟

اسکریپتی و کامپایلی فقط نحوهء اجراست.
ضمنا لزوما یک زبان اسکریپتی برای همیشه اسکریپتی نمیمونه. یعنی دلیل نمیشه مثلا نشه یک کامپایلر برای PHP نوشت که برنامه های PHP رو به فایل اجرایی باینری تبدیل کنه که خودشون مستقیما قابل اجرا باشن. البته احتمالا این کار سختی باشه (چون این زبانها برای این نحوهء اجرا بهینه طراحی نشدن). البته یک راهش هم اینه که درواقع مفسر اون زبان رو در خود فایل اجرایی Embed میکنن (ولی این یک نوع کلک رشتی میشه!!).

one hacker alone
دوشنبه 15 آبان 1391, 17:30 عصر
خوب پس چرا ما ندیدم یک سیستم مدیریت محتوا با پایتون نوشته بشه بجای php ؟ باید یک اختلافی بین php با زبان ها اسکریپتی دیگه باشه
ایا جاوا اسکریپت یک زبان اسکریپتی هست؟
در کل زبان های اسکریپتی چرا بوجود اومدن و کاربردشون چیه؟

Beginner2013
دوشنبه 15 آبان 1391, 22:54 عصر
خوب پس چرا ما ندیدم یک سیستم مدیریت محتوا با پایتون نوشته بشه بجای php ؟ باید یک اختلافی بین php با زبان ها اسکریپتی دیگه باشه
ایا جاوا اسکریپت یک زبان اسکریپتی هست؟
در کل زبان های اسکریپتی چرا بوجود اومدن و کاربردشون چیه؟



خوب پس چرا ما ندیدم یک سیستم مدیریت محتوا با پایتون نوشته بشه بجای php ؟ باید یک اختلافی بین php با زبان ها اسکریپتی دیگه باشه
ایا جاوا اسکریپت یک زبان اسکریپتی هست؟
در کل زبان های اسکریپتی چرا بوجود اومدن و کاربردشون چیه؟

سلام،همونطور که دوستمون هم اشاره کردن زبان های اسکریپتی زبان هایی هستند که به وسیله یک مفسر خط به خط خونده شده و اجرا میشن.
اما اینکه
چرا CMS با PHP زیاد می بینیم اما با پایتون نه،علتش اینکه هدف اولیه از ساخت PHP زبانی برای توسعه وب بوده.

آیا زبان جاوا اسکریپت اسکریپتی هست یا نه؟بله هست.
البته ما سه نوع جاوا اسکریپت داریم،
-جاوااسکریپتی که نت اسکیپ ساخت،و هم اکنون همه مرورگرها اونرو ساپورت میکنن=>اسکریپتی چون تفسیر میشه
-چاوا اسکریپتی که مایکروسافت با ترکیب جاوا اسکریپت فوق با چندین خاصیت و متد غیر استاندارد و افزودن قابلیت استفاده از فایلهای اکتیوX درست کرد=JSCRIPT=>اسکریپتی چون باز توسط تفسیر میشه
-جاوااسکریپت دات نت یا جی اسکریپت دات نت که به زبان میانی کامپایل میشه=>اسکریپتی نیست.


در کل زبان های اسکریپتی چرا بوجود اومدن و کاربردشون چیه؟
زبان های اسکریپتی معمولا برای کار خاصی ساخته میشن،مثلا یکی مث همین JavaScript برای برنامه نویسی کلاینت ساید و دیگری کث PHP برای برنامه نویسی ServerSide و یا زبانی مثل ActionScript برای ساخت فایل های فلش.پس نمیشه گفت کاربردشون چیه.اما میشه گفت مزیتی دارند و اون اینکه هرجا مفسرشون باشه میشه اونها رو اجرا کرد،مثلا همین فایل های HTML رو در هر سیستم عاملی با یه مرورگر می تونید اجرا کنید در واقع برای کروس پلت فرم بودن این زبان ها فقط کافیه که مفسر اون برای انواع پلتفورم ها ساخته بشه و چون این فایل ها متنی اند حجم کمی هم دارند،نسبت به یک مثلا فایل باینری اجرایی استند الون.

اما درمورد حرفی که دوستمون گفتن

ضمنا لزوما یک زبان اسکریپتی برای همیشه اسکریپتی نمیمونه. یعنی دلیل نمیشه مثلا نشه یک کامپایلر برای PHP نوشت که برنامه های PHP رو به فایل اجرایی باینری تبدیل کنه که خودشون مستقیما قابل اجرا باشن. البته احتمالا این کار سختی باشه (چون این زبانها برای این نحوهء اجرا بهینه طراحی نشدن). البته یک راهش هم اینه که درواقع مفسر اون زبان رو در خود فایل اجرایی Embed میکنن (ولی این یک نوع کلک رشتی میشه!!).

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

eshpilen
سه شنبه 16 آبان 1391, 08:17 صبح
خوب پس چرا ما ندیدم یک سیستم مدیریت محتوا با پایتون نوشته بشه بجای php ؟
با پایتون هم میشه.
اینکه نوشته نشده دلیلش این نیست که نمیشه. حتما دلیل دیگری داره. مثلا اینکه PHP در وب خیلی فراگیرتره و کسی اینقدر انگیزه و دلیل نداره که با پایتون CMS بنویسه (بخصوص باوجود CMS های متعدد PHP که از قبل وجود دارن).
حالا شما مطمئنید که CMS پایتون نداریم؟
------------
ویرایش:
هست که!
سه تا CMS پایتون رو میتونید در اینجا مشاهده کنید: http://en.wikipedia.org/wiki/List_of_content_management_systems#Python


باید یک اختلافی بین php با زبان ها اسکریپتی دیگه باشهاز نظر اسکریپتی بودن اختلاف خاصی وجود نداره.
PHP صرفا محبوبیت و آمار زیادی داره در وب. حالا اینکه چرا، خودش بحث و تحقیق دیگری میشه.


در کل زبان های اسکریپتی چرا بوجود اومدن و کاربردشون چیه؟بنظر بنده، چون دلیلی برای بوجود نیامدن اونا نبود.
خب اینم یک روش اجراست. چرا بوجود نیاد؟ معمولا هرچیزی که امکان بوجود آمدن داره رو از روی کنجکاوی هم که شده بوجود میارن. بعد از اونم چون بهرحال اونم یکسری مزایای خودش رو داره، موفق شده و پیشرفت کرده و انواع بیشتری ازش بوجود آمده.
روش اجرای زبانهای کامپایلی یکسری مزایا رو داره (معمولا یکیش سرعت بیشتر و مصرف منابع کمتر)، و زبانهای اسکریپتی هم یکسری مزایای خودشون رو (معمولا یکیش توسعه و تست سریعتر و راحتتر بخاطر حذف پیچیدگی ها و زمان فرایند کامپایل).


به نظرم یک زبان اسکریپتی یک زبان اسکریپتی هست مگر اینکه مورد اولی که گفتید رخ بده که در این صورت این زبان دیگه اون زبان نیست!
از نظر تخصصی و دقیقش، اصلا زبان اسکریپتی یک اصطلاح بیش از حد کلی و مبهم و غیردقیق و غیرمطلقی هست. این حرف هم از خودم درنیاوردم، بلکه در مقاله هایی که خوندم دیدم.
سینتاکس این زبانها اونا رو فقط به اجرا بصورت اسکریپتی محدود نمیکنه. و بعضی زبانها بوده و هستن که هم بصورت اسکریپتی و هم بصورت کامپایلی وجود داشتن (مثلا از نظر تاریخی زبان BASIC).
هیچ دلیلی نداره نشه PHP یا پایتون رو هم به فایل اجرایی باینری کامپایل کرد. منتها باید کامپایلرش نوشته بشه، که شاید دشوارتر باشه نسبت به زبانهای دیگه، چون سینتاکس این زبانها برای اجرا بصورت تفسیری مناسبتره. بهرصورت کسی دلیل و انگیزهء کافی نداره که چنین کاری بکنه.
البته اصطلاح زبان اسکریپتی، برای طبقه بندی عمومی و انتقال یکسری مفاهیم و اطلاعات ذهنی خوبه. ولی همونطور که گفتم از نظر علمیش اصطلاح کاملا دقیق و صحیحی نیست (گرچه این اشتباه اهمیت چندانی نداره و فواید استفاده از این اصطلاح بیشتره تا مضراتش). اگر میگفتیم روش اجرای اسکریپتی، صحیح تر میبود.

ضمنا احتمالا میدونید که فیسبوک کدهای PHP رو به کدهای سی++ تبدیل میکنه و بعد سی++ رو کامپایل میکنه.
از جزییاتش اطلاعات بیشتری ندارم (یا حضور ذهن ندارم). اگر در این بین توسط دست دستکاری روی کد صورت نگیره و همهء مراحل بصورت خودکار قابل انجام باشه، میشه گفت که فیسبوک روش اجرای کامپایلی رو به زبان PHP اضافه کرده. حتی با اینکه اول به کد سی++ تبدیل میشه، ولی فکر میکنم بازم میشه گفت یک کامپایلر نوشتن. چون بهرحال مهمش اینه که بصورت خودکار، نتیجهء نهایی که فایل اجرایی هست حاصل بشه.

one hacker alone
چهارشنبه 17 آبان 1391, 12:38 عصر
خوب اول از همه دوستان ممنون و بعد:

من به خیلی چیزا رسیدم از جمله گنگ بودن واژه اسکریپت که با این تعریف که زبان هایی که توسط مفسر ها تفسیر میشن مشخص میشه
در مورد کاربردهاشون هم کلیات یه چیزایی دستگیرم شد اما
خوب حالا که چهارچوب کلی دستم اومد و با توجه به حرف دوستمون که PHP برای توسعه وب درست شد خوب پس میخواستم با تکیه به همین موضوع
دوستانی که تجربه و اطلاع دارن بگن که 3 زبان RUBY , PHYTON , PERL هر کدوم برای چی ساخته شدن یعنی اینکه بیشتر قدرتشون کجا متمرکز شده مثلا این 3 زبان که تو وب کمرنگ تر هستن کجا بیشتر کاربرد دارن و البته فکر کنم بشه با هر 3 اونها هم زبان های CGI نوشت

eshpilen
پنج شنبه 18 آبان 1391, 11:24 صبح
دوستانی که تجربه و اطلاع دارن بگن که 3 زبان RUBY , PHYTON , PERL هر کدوم برای چی ساخته شدن یعنی اینکه بیشتر قدرتشون کجا متمرکز شده مثلا این 3 زبان که تو وب کمرنگ تر هستن کجا بیشتر کاربرد دارن و البته فکر کنم بشه با هر 3 اونها هم زبان های CGI نوشت
پرل یک زبان قدیمی تر بوده و میتونی با کمی اغماض، پایتون رو جایگزین پرل تصور کنی. یعنی جدیدتر و مدرن تر و سطح بالاتر و با ساختار اصولی تر. بنابراین از نظر برنامه نویسی بهتر.
البته پرل چون از قدیم کدمنبع و برنامه و کامیونیتی گسترده و غنی ای داره، هنوزم به حیات خودش ادامه میده و کاربرد داره. ولی الان کسانی که تازه وارد میدان میشن کمتر سراغ پرل میرن و بجاش پایتون رو انتخاب میکنن، که بنظرم این انتخاب منطقی هم هست.
البته ظاهرا بعضیا، منجمله سازندهء پرل، اعتقاد دارن که پرل هنوزم کاربردها و مزایا و ساختار خاص خودش رو داره و پایتون جایگزین قطعی پرل نیست. بهرحال تاجاییکه میدونم هنوزم توسعه داده میشه و پیشرفت میکنه.

پایتون هم در وب کاربردش کمتره، ولی در حیطه های دیگر تاجایی که میدونم کم و بیش زبان محبوب و پرکاربردیه. من جزییات و آمار خاصی ازش ندارم، اما شنیدم یا دیدم در برنامه های امنیتی و هک، در برنامه های کم و بیش کوچک یوتیلیتی و مدیریت سیستم (لینوکس)، در برنامه های علمی و زبان مورد انتخاب دانشمندان رشته های دیگری که نیاز به برنامه نویسی بعنوان یک ابزار فرعی کارشون دارن، و همچنین در دسکتاپ کاربردهای زیادی داره. حتی باهاش برنامه هایی شبیه اتوکد و اینها هم نوشتن. یک سایتی بود که برنامه های جالبی رو که با پایتون بودن نشون داده بود که اونجا دیدم.

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

CGI هم یک زبان نیست. بلکه یک استاندارد و روش تعامل وب سرور با برنامه هایی هست که برای وب نوشته شدن. با استفاده از اینترفیس CGI میشه هر برنامه ای رو با هر زبانی نوشت و روی سرور بصورت یک برنامهء محلی اجرا کرد اما برای کاربردهای وب. با سی و سی++ هم میشه برنامه برای CGI نوشت. حتی با اسمبلی هم میشه. کلا با هر زبانی که روی سیستم عامل وب سرور قابل اجرا باشه. یک برنامهء CGI یک برنامهء اجرایی عادیه که توسط وب سرور بصورت خارجی اجرا میشه و مطابق استاندارد CGI اطلاعات درخواست و پاسخ بین وب سرور و این برنامه رد و بدل میشن.

one hacker alone
پنج شنبه 18 آبان 1391, 14:13 عصر
خوب ممنون اطلاعات خوبی بود
حضور perl در چند سال اخیر بسیار خوب بوده و الان هم هست و این روزها با گسترده شدن لینوکس phyton هم در بین کاربران محبوب شده
من خودم در زمینه هک و امنیت و نوشتن اسکریپت های پرکاربرد بیشتر پرل رو دیدم
حالا نمیدونم آیا بهتر نیست پرل رو با توجه به اینکه مستندات اون هم بیشتر هست شروع کنیم؟

eshpilen
پنج شنبه 18 آبان 1391, 17:23 عصر
دیگه بقیش رو خودت میدونی.
کسی نمیتونه نظری بده، مگر اینکه تجربه و اطلاعات گسترده ای داشته باشه.
اگر وقت و علاقه زیادی داری و دغدغهء شغل و درآمد فعلی و آینده نداری، خب هرچی دوست داری و احساس نیاز میکنی برو دنبالش.
ولی من شک دارم اینطور باشی. چون من خودم وقت و علاقهء زیادی داشتم و دغدغهء شغل و درآمد هم چندان نداشتم و تمام وقتم رو برای دانستن و توانستن گسترده در برنامه نویسی گذاشتم، اما دیگه وقت و اولویتش نبود برام که برم سراغ پرل (و هنوزم چنین فرصت آزاد و منطق پرداختن به این اولویت رو پیدا نکردم). وگرنه حداقل یک بار احساس کردم و دوست داشتم پرل هم یاد بگیرم، ولی دیدم وقت و منطقش نیست و دیگه کار احمقانه و خطرناکی بنظر میرسه که بخوام بجای پول و بازار این همه وقت و انرژی رو روی زبانی صرف کنم که بازار کار کوچک و آیندهء مبهمی داره.
حقیقتش چون یک برنامهء وبشلی بود که یک چیز ساده ای میخواستم بهش اضافه کنم، اما چون با پرل نوشته شده بود ازش سردرنیاوردم!!

زبان های مفید و کاربردی زیاد هست. یعنی اونقدری که تمام وقت ما رو پر بکنه.
بنظرم امروز کمتر کسی اونم در ایران میره سراغ پرل. چون زبانهای با بازار کار بیشتری مثل پایتون و سی++ و دات نت و Qt و PHP و اینها هست.
تازه همین پایتون هم در ایران فکر نمیکنم بازار کار بقدر کافی داشته باشه. PHP خیلی خیلی بهتره از این نظر.
ضمنا من این همه سال فقط چند مورد معدود با پرل برخورد کردم که بلد بودنش نیاز یا مفید بود، ولی مثلا به برنامه ها یا نمونه کدهای پایتون بیشتر برخورد کردم. PHP هم که خیلی زیاده.
مثلا میری توی ویکیپدیا مقالهء تخصصی میخونی راجع به الگوریتمی کتابخانه ای چیزی، نمونه کدش معمولا با پایتون/PHP/جاوا و اینها هست، نه با پرل. البته پرل هم پیدا میشه، ولی خیلی کمتره و رو به افول بنظر میرسه.

سی و سی++ هم با اینکه خیلی قدیمی هستن اما هنوزم خوب زنده هستن و کاربرد دارن. نمونه کدهاشون در مقاله های تخصصی هم نسبتا زیاده (در موارد و سطوح برنامه نویسی ای که این زبانها توش معنا دارن). داکیومنت و برنامه و راهنما و هرچی هم بخوای که درحد Plentiful.

MSK
پنج شنبه 16 آذر 1391, 15:27 عصر
با اجازه اساتید من هم اینجا یه کامنت بزنم. ویکی‌پدیا یه مقاله داره راجع به زبان های اسکریپتی اینجا: http://en.wikipedia.org/wiki/Scripting_language
بکم ازش نقل قول کنیم که با اجازه‌ی دوستان ترجمه نشده بمونه:


A scripting language or script language is a programming language that supports the writing of scripts, programs written for a software environment that automate the execution of tasks which could alternatively be executed one-by-one by a human operator. Environments that can be automated through scripting include software applications, web pages within a web browser, the shells of operating systems (OS), and several general purpose and domain-specific languages such as those for embedded systems.
Scripting is usually a property of the primary implementations of a language, rather than a language per se, although many languages are not very suited to this kind of implementation. For example, C++‎ interpreters do exist, but C++‎ is generally not considered a scripting language, as not only are these implementations rarely used, but the time taken to write a script in C++‎ would be far in advance of that required to write in a language like Python.
Typically, a scripting language is characterised by the following properties:
Ease of use. Scripting languages are intended to be very fast to pick up and author programs in. This generally implies relatively simple syntax and semantics.
OS facilities - especially filesystem and related, built in with easy interfaces. Scripting is usually aimed at desktops, limiting the portability needs of the pre-built libraries.
Interpreted from source code - to give the fastest turnaround from script to execution. On a desktop, the performance of even a slow interpreter is often non-problematic. In comparison, non-scripting languages intended for large programs are often precompiled in at least some sense for superior performance.
Relatively loose structure. It would be difficult to use Java as a scripting language due to the rules about which classes exist in which files - contrast to Python, where it's possible to simply define some functions in a file.


۴تا مشخصه اصلی که واسش گفته اینان:

آسانی
تفسیری بودن
امکانات سیستمی داشتن
ساختار برنامه نویسی باز داشتن


کاربردشون رو هم گفته که اتوماسیون اجرای کارهایی است که توسط خود برنامه نویس هم می شد که بطور دستی اجرا بشه.
اما همون ‌طور که دوستان هم گفتن خیلی هم دقیق نیست و مثلا گفته ورژن اسکریپتی C++‎ هم هست که خیلی اجیبه.

در مورد کاربرد اصلی این زبانها هم من نظر شخصیم رو میگم: پرل که قدیمی ترین اینهاست قدرت اصلیش توی پروسس متن هست و بقول مخترع زبان: چسب بین بخش های مختلف سیستم. یعنی ایجاد ارتباط.
اگه کار های مربوط به پروسس متن داری پرل قابل مقایسه به پایتون و روبی نیست. یعنی مثلا اگه یه آرشیو از ایمیل ها داری و می خوای یه لیست از موضوعاتشون یا کلمات کلیدیشون درست کنی. اگه یه سیستم لینوکس داری که ۱۰۰ تا یوزر یا بیشتر داره و می خوای چک کنی که همه آدرس ایمیلشون رو درست وارد کردن؛ از پسورد قوی استفاده کردن و مثل اینها. پرل خیلی خوب و راحته واسه این کارا. در ضمن چون یه زمانی تقریبا اصلی ترین زبان CGI بوده این قابلیت های CGI یش هم خیلی قوی ه . مثلا چند وقت پیش شاتل به دوست من یه پروژه ی پرل واسه یه درگاه خاص یه سرویس داده بود.
منظورم اینه که پرل نه اینکه نمرده؛ بلکه خیلی هم زندست و واسه خیلی کارها هنوز هم بهترینه با فاصله زیاد :لبخند:
بعدش پایتون؛ پایتون هدف اصلیش سادگی‌ه. من تاحالا به دونفر پایتون رو آموزش دادم به هردو توی ۵ دقیقه موضوعات اصلی رو گفتم.:لبخند: واسه همین مثلا برای کارهای علمی شدیدا به سمت پایتون رفتن. هم اتاقی من تو خابگاه رشتش نوروساینس ه و الان توی هند تو یه ورکشاپ ه که نرم‌افزار اصلیش بر مبنای پایتون‌ه. و از این مثالا زیاده. چون دانشمند رشته قیزیک نمی‌خواد C++‎ با Fortran یاد بگیره و وقتشو واسه برنامه نویسی صرف بکنه؛ واسه همین رقبت به پایتون برای اونا زیاد شده. یه قسمت خوب دیگه واسه پایتون برنامه نویسی محیط های گرافیکی ه که نیاز به قدرت محاسباتی بالایی ندارند. مثل موزیک پلیر ها، بازی ها خیلی ساده(نه مثل call of duty ;-) ) برنامه های تقویم و مدیریت زمان و اینها. چون مثلا با C++‎ تو مجبور میشی ۲۰-۳۰ هزار خط کد بزنی که بگی یه پنجره می خوام دوتا دکمه داشته باشه اگه این دکمه رو زد آهنگ رو پخش کن، اون یکی دکمه رو زد برو آهنگ بعدی.:لبخند: وقتی همین کار رو میشه با ۱/۲۰ کد با هزار خط نهایتا نوشت چرا این کار رو نکنیم؟!! الان توی دسکتابهای اصلی لینوکس مثل gnome و KDE خیلی قسمت ها رو با پایتون نوشتن. من خودم دوتا پروژه با پایتون انجام دادم و می‌تونم بگم که لذت بخش بود. :لبخندساده:
اما روبی؛ روبی یه مزیت خیلی خیلی بزرگی که داره اینه که یه زبان خیلی خوبه واسه DSL (http://en.wikipedia.org/wiki/Domain-specific_languages) یعنی چی؟ یعنی اینکه نیگا کن مثلا C واسه سیستم عامل نوشتن مناسبه چون پیچیدگی های زیادی نداره و باعث میشه تمرکز طراح سیستم عامل بهم نخوره. یا همون‌طوری که گفتیم پرل یه مزایایی داره و یا پایتون. خلاصش اینه که هر زبانی برای به کاری مناسب تره. واسه همین خیلی شرکت های بزرگ دنیا واسه کارهای اختصاصی خودشون زبان‌های اختصاصی درست می کنن. مثلا زبان برای گزارش های مالی. ترابری و از اینجور چیزها. به این زبانها میگن DSL. حالا مزیت روبی اینه که واسه اینکه این زبان رو مناسب کاربرد خاصی بکنی خیلی مناسبه. مثلا من خودم اول که روبی رو یاد گرفتم اصلا ازش خوشم نیومد. اما دنبال Ruby on Rails (http://rubyonrails.org/) که رفتم عاشقش شدم. حالا RoR فقط یه لایبری توی روبی ه برای طراحی سایته اما انقد مناسب و زیباست که من که دیگه دلم نمیخاد برم دنبال php.

خلاصه اینکه باید ببینی چی می خوای تا بدونی کدوم یکی برای یادگرفتن تو مناسب بره.
امیدوارم که تونسته باشم کمکت کنم

one hacker alone
جمعه 01 دی 1391, 18:11 عصر
ممنون دوست عزیز از اطلاعاتی که دادین مفید بود
هنوز انتخاب سخته
خوب با توجه به اینکه من کاربر عادی هستم و نیازی به گسترش روبی باتوجه به نیازهای خودم ندارم پس روبی شاید گزینه مناسبی برام نباشه چون زبانه DSL هست اون جور که شما میگین
زبان پایتون از سادگی و سرعت یادگیریش گفتین و هنوز به عمق کاربرد پیتون من پی نبردم
من مانور کارم بیشتر در مورد وب هست یعنی زبان اسکریپتی که بشه باهاش تو وب چرخید در اندازه ساخت موتور جستجو
کاوش در کد ها و ...
یعنی بحث سوکت پروگرامینگ
نظرتون چیه دوستان؟

eshpilen
شنبه 02 دی 1391, 15:17 عصر
بنظر من اول PHP یاد بگیری بهتره.
البته نه اینکه PHP از پایتون سر باشه، بلکه بخاطر اینکه PHP آمارش خیلی بالاتره و به درد ساخت وبسایت و بازار کار هم میخوره.
مگر اینکه خیلی اصرار داشته باشی و مطمئن باشی که حیطهء کاریت فقط همینه و آیندهء کار و درآمد هم برات اهمیت زیادی نداره.
ضمنا با PHP خیلی کارها بجز سایت هم میشه کرد. مثلا همین سوکت. حتی میشه باهاش برنامهء دسکتاپ و کامندلاین و GUI هم کار کرد.
ولی خب پایتون مثلا یه مزیتش بر PHP اینه که پشتیبانی از ترد داره که فکر کنم توی اون کارهایی که میگی هم کاربرد داشته باشه.
برنامه های اونطور هم که میگی فکر کنم با پایتون بیشتر باشه و پایگاه بیشتری داره در پایتون. هرچند فکر کنم با سی و سی++ هم همینطور.

درکل در نهایت باید بری یاد بگیری و هیچوقت نمیتونی صرفا با تحقیق و پرسش از دیگران 100% مطمئن باشی. تا خودت یاد نگیری و تجربه نکنی، همه چیز برات مشخص نمیشه. تازه اونم بستگی به توان و پشتکار و سطح خودت داره که چقدر بفهمی و بتونی. افرادی هستن یک زبان رو یاد میگیرن اما میگن چرت بود و توان چندانی هم ندارن، اما یکی دیگه میگه عالیه و باهاش تقریبا همه کار هم میتونه بکنه.
با یک زبان هم فکر نمیکنم کسی بتونه همه جا همه کار بکنه.
بخصوص توی کارهای هک و مهندسی معکوس و مشابهش (حالا لزوما کار منفی نیستا)، خیلی بهتر یا اصلا لازمه که آدم با زبانهای و فناوریهای مختلف و روی پلتفرمهای مختلف آشنا باشه و بتونه درصورت لزوم کار کنه. حتی گاهی برنامه ها ترکیبی از چند زبان و پلتفرم ممکنه بشن.

بالاخره باید از یک جایی شروع کرد. اگر بخوای مثل هکرهای واقعی (به معنای قدیمیش) همه فن حریف باشی خیلی مهم نیست که دقیقا از کجاش شروع کنی، چون علم رایانه و برنامه نویسی بیشتر جاهاش به هم وصله و مدام از توی همدیگر عبور میکنن مسیرها. از یک جا که شروع کنی تاحدی مثل یک کلاف سردرگم هست که نهایتا به خیلی از نقاط شروع ممکن دیگر هم میرسی. منتها مسئلهء وقت و انرژی هست که اگر محدودیت داشته باشه یا اولویت های دیگری هم مهم باشن (مثل همون کار و درآمد که گفتم) اونوقت باید در انتخاب نقطهء شروع، پارامترهای دیگری رو هم دخالت داد و با احتیاط بیشتری انتخاب کرد.

البته بنظر من آدم باید ابتدا از سطح پایین با برنامه نویسی آشنا بشه. اینطوری بنظرم بهینه تره.
من خودم اول سی رو خوب یاد گرفتم. البته قبلش الگوریتم با بیسیک کار کرده بودم، ولی سی رو تقریبا کامل و قوی یاد گرفتم درحدی که اون موقع توان داشتم (کتاب مرجع جفرنژاد قمی رو کامل خوندم و کار کردم + یکسری تمرین و پروژه های پراکنده). سی چون سطح پایینه، در ساختمان داده ها و ساختار زبانهای برنامه نویسی دانش و بینش و مهارت خوبی پیدا میکنی که بعدا در کارهای پیشرفته و خاص که تقریبا در هرجایی ممکنه پیش بیان خیلی بهت کمک میکنه. مثلا میتونید در وب هم در سطح پروتکل راحتتر کار کنید (کاری که هرکسی نمیتونه حتی طرفش بره).
ولی خب اگر سی در دوران دانشگاه نبود و بخصوص یکی از استادهای ما با گفتار جذابش منو بهش علاقمند نکرده بود شاید هیچوقت به اون شکل دنبال سی نمیرفتم. بنظرم آدم وقتی زبانهای سطح بالا و ویژه کارتر رو یاد بگیره دیگه انگیزه و دلیل و ضمنا وقت و انرژی آزاد خیلی کمتری براش پیش میاد که بره دنبال زبانهای قدیمی و سطح پایینی مثل سی.
بعدها حتی اسمبلی هم درحد آشنایی کار کردم. ولی سی خیلی کاربردی تره. اسمبلی وقتی که بخوای سیستمی و سطح پایین کار کنی بیشتر به درد میخوره. مثلا شاید یه زمانی یه سخت افزار اختصاصی بخوای برای کاری طراحی کنی یا برای یک باگ سطح پایین در نرم افزار اکسپلویت و شل و Payload و اینطور چیزها بنویسی.
ولی خب من ذهنم خیلی بلندپروازه و اینقدر برنامه داشتم که مطمئن نیستم حتی تا آخر عمرم هم فرصت کنم همه رو انجام بدم!
واقعا آدم میرسه؟
ولی خب فکر نکن هرکسی میتونه برنامه های خاص رو بنویسه. اینطور برنامه ها خیلی راحت و زیاد با مسائل مختلف در حیطه های و پلتفرمهای مختلف درگیر میشن. آدمی که میخواد در این زمینه کار کامل و موفق بکنه باید واقعا دانش گسترده و عمیقی در رایانه و برنامه نویسی داشته باشه. بعید میدونم کسی که فقط یک زبان بلد باشه یا نهایت دو سه تا زبان سطح بالا، بتونه در این کار بهینه باشه.
مدتها باید زحمت بکشی. باید خیلی چیزها رو مطالعه کنی. فکر نکنید فقط با یادگیری یک زبان میشه کارهای پیشرفته و خاص کرد. زبان اون موقع فقط یک ابزاره و شاید 20% کار باشه یا حتی کمتر.

MSK
یک شنبه 03 دی 1391, 15:53 عصر
خوب من اینجا نظر خودم رو میگم:
اگه من می خواستم موتور جست و جو بنویسم حتما با C / C++ یا java / scala یا C# می نوشتم. حالا بستگی به این داره که با کدوم خودتون راحتتر باشید. خانواده C یا خانواده java یا net .
دلیلشم اینه که موتور جستجو یکی از پیچیده ترین و سنگین ترین برنامه های موجود برای نوشتنه. البته اگه واقعا هدفتون نوشتن موتور جستجوی واقعی ه. یعنی مثلا مثل گوگل. در این صورت شما می خواید که از آخرین حد توانایی موجود در کامپوترهاتون استفاده کنید. و البته این کار با زبان‌های اسکریپتی خیلی مقدور نیست.

اما توی ایران خوب معمولا کسی قصد نوشتن همچین برنامه هایی رو نداره و منظور از موتور جستجو معمولا web crawler (http://en.wikipedia.org/wiki/Web_crawler) یا meta search engine (http://en.wikipedia.org/wiki/Meta_search_engine) هست که خوب اینها به مراتب برنامه های نسبتا ساده تری هستند و من فکر می کنم که برای زبانهای اسکریپتی خیلی مناسب هستند. دیگه برای نوشتن اینها بنظر من خیلی تفاوتی نمی کنه که از پرل یا پایتون یا روبی استفاده کنی.

اما یکم توضیح بیشتر در مورد پست قبلیم لازم میبینم که بگم:
اولا در مورد روبی این اشتباه رو نکنید که یعنی هرکس نیاز به برنامه نویسی در روبی رو داره پس نیاز داره که یک DSL طراحی کنه!
من از قدرت زبان روبی گفتم. نگاه کنید، برای برنامه نویسی در هر زمینه ای در هر زبانی شما باید متوسل به library ها یا همان کتاب‌خانه های موجود در آن زبان در آن زمینه بشید. مثلا بطور طبیعی اگه قصد نوشتن یک وبسایت در روبی رو داشته باشید سراغ کتابخانه rails میرید. اگه توی پایتون قصد برنامه نویسی شبکه رو داشته باشید سراغ twisted میرید. اگه در C قصد نوشتن برنامه تحت کنسول رو داشته باشید سراغ stdio.h میرید.
اما کسی که این کتابخوانه ها رو در این زبانها طراحی می کنه نیاز داره یک api برای کتابخانه خودش طراحی کنه. مثلا شما می دونید که در stdio.h یک تابع printf وجود داره. ابن api را رابط برنامه نویسی این کتابخانه است.
حالا نکته ای که وجود داره اینه که رابط های برنامه نویسی موجود در یک زبان معمولا همه تا درجات بالایی شبیه هم اند. یعنی شما در C تفاوت زیادی بین برنامه نویسی شبکه و برنامه نویسی گرافیکی نمی بینید. در هر دو مورد باید از یک سری توابع استفاده کنید، نگران مدیریت حافظه باشید، و مانند اینها.
اما قدرت روبی در اینجاست که این رابط های برنامه نویسی در اون بشدت با همدیگه متفاوت اند. یعنی مثلا وقتی طراحی وبسایت با روبی می کنید و از کتابخانه های مربوطه استفاده می کنید احساس می کنید که انگار اصلا یک زبان برنامه نویسی طراحی شده برای کار شما. و این همون مفهوم DSL ه.
اما شما خودتون نیازی به طراحی یا گسترش زبان رو در شرایط عادی ندارید. قبلا این کار رو برای شما دیگران انجام داده اند. مثلا اگه قصد برنامه نویسی سوکت رو داشته باشید، خیلی ساده میرید سراغ کتابخانه سوکت، که بطور استاندارد وجود داره. و اتفاقا من خودم چند تا کد نمونه سوکت با روبی زده ام و میتونم بگم که از سادگی اون شگفت‌زده شدم.
خلاصه این قدرت روبی‌ه.

اما درمورد پایتون هم فکر می‌کنم مثال به اندازه کافی زدم. پاتون واقعا مناسب همه کار هست و با اون همه کار کردند. دلیلش هم سادگی زبانش هست. مثلا برای طراهی رابط کاربری یا همون GUI برنامه ها، یا طراحی سایت، با محاسبات علمی و یا حتی طراحی بازی.
من برای پایتون فقط دوتا نقطه ضعف می بینم. اول اینکه بهینگی یک زبان کامپایل شده مثل C رو نداره. یعنی مثلا بطور طبیعی ۵ تا ۱۰ بار کند تر از C اجرا میشه و به همین میزان هم بیشتر حافظه مصرف می کنه.
و دوم هم اینکه براحتی بشما اجازه میده که برنامه هاتون رو از روش های غلط بنویسید. یعنی اینکه مثلا در C ممکنه برای انجام یک کار بخصوص ۲تا ۳ راه حداکثر داشته باشید، و این هم در حالیه که معمولا انجام دادن راه اشتباه سخت تره. اما برای پابتون ممکنه بیش از ۱۰ راه داشته باشید، و این براحتی باعث میشه که شما به اشتباه بیفتید و از راه غلط یک کار رو انجام بدید.

در هر صورت مناسب بودن یا نیودن یک زبان در انجام کاری بنظر من در نهایت به تبحر شما در اون زبان بر میگرده.

parandish
یک شنبه 10 دی 1391, 14:50 عصر
ممنون از دوستان بخصوص MSK .
دوست عزیز مزیتهای Ruby رو گفتی خواستم بدونم آیا عیب خاصی برای web programming داره ؟ البته به غیر از تعداد Developerها ...
ضمنا مختصر توضیحی در مورد تفاوت انواع Web Framework هاش بدی ممنون میشم ;) واینکه من برای شروع با کدوم شروع کنم Ruby on Rails (http://rubyonrails.org/) یا sinatra
Ruby فریم ورک غیر وبی محبوب هم داره؟

linux
یک شنبه 20 اسفند 1391, 14:22 عصر
با اجازه اساتید من هم اینجا یه کامنت بزنم. ویکی‌پدیا یه مقاله داره راجع به زبان های اسکریپتی اینجا: http://en.wikipedia.org/wiki/Scripting_language
بکم ازش نقل قول کنیم که با اجازه‌ی دوستان ترجمه نشده بمونه:

اما همون ‌طور که دوستان هم گفتن خیلی هم دقیق نیست و مثلا گفته ورژن اسکریپتی C++‎ هم هست که خیلی اجیبه.

خیلی هم عجیب نیست دنبال UnderC, Cint, و Ch بگردید این سه تا مفسر سی و سی++ هستند.