آموزش اسکریپت نویسی

آموزش اسکریپت نویسی پوسته گنو-لینوکس

آموزش اسکریپت نویسی

آموزش اسکریپت نویسی پوسته گنو-لینوکس

CompilingBad

ترجمه زیان‌آور

چرا ترجمه کردن (compiling) یک اسکریپت نامناسب است

یا، چرا موقعی که شما در مورد یک مترجم اسکریپت پرسش می‌کنید greycat بر سر شما فریاد می‌کشد

اسکریپت پوسته را ملاحظه کنید. خصوصیات آن چیست؟ توانایی‌ها و ضعف‌هایش کدام هستند؟

نقاط قوت:

  • ساده، به آسانی قابل فهم
  • قابل نوشتن به طور سریع
  • فضای زیادی از دیسک اشغال نمی‌کند
  • اگر بدانید که چکار می‌کنید، بدون نیاز به اصلاح دارای شانس قابل قبولی برای کار کردن روی سیستم‌عامل‌های گوناگون است

ضعف‌ها:

  • اجرای کند (به طور نوعی)
  • عدم دسترسی معقول و قوی به حساب ممیز شناور، ساختارهای داده‌ای پیچیده، پرس و جوی بانک اطلاعاتی، و غیره (وابسته به زبان)
  • سطر ِشبانگ باید برای هر سیستم مقصد ویرایش گردد

البته، من یک اسکریپت پوسته نوشته شده به طور صحیح را در نظر می‌گیرم. بنابراین من مواردی مانند «متمایل به خطاهای دستوری و منطقی نوآموز» را به شمار نمی‌آورم، زیرا این مشخصهِ هر نوع از برنامه‌نویسی است.

دوباره به آن نقطه قوت اول که لیست کردم نگاهی بیاندازید: ساده، به آسانی قابل فهم. کدام مطلب را می‌رساند؟ بیش از هر چیز، بر این دلالت می‌کند که اشخاص می‌توانند به آن نگاه کنند!

اگر یک اسکریپت پوسته را ترجمه کنید، به یکی از این دو دلیل می‌خواهید این کار را انجام بدهید:

  1. می‌خواهید سریع‌تر اجرا شود، یا
  2. می‌خواهید آن را از مردم پنهان کنید.

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

آگاهی نیازمند آزاد بودن است.

اشتراک گذاشتن اطلاعات همه ما را توانمند می‌سازد. توماس جفرسون1 نوشت:

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

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

چرا اشخاص می‌خواهند اسکریپت‌های پوسته‌شان را پنهان کنند؟

  • آنان تلاش دارند آنها را به فروش برسانند.

  • آنها از بابت اسکریپت‌هایشان شرمسار هستند.

اگر شما از ما برای کمک به فروش یک محصول می‌پرسید، آنوقت شما یک spammer هستید و ما هیچ کاری با شما نداریم.

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

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


ترجمه زیان‌آور (آخرین ویرایش ‎2013-07-03 16:52:59‎ توسط GreyCat)



  1. مترجم: Thomas Jefferson از مؤثرترین برپاکنندگان ایالات متحده و یکی از قدیمی‌ترین و برجسته‌ترین سیاستمداران و زمامداران امریکایی بود، او یکی از نویسندگان بیانیه استقلال امریکا، و سومین رییس جمهور این کشور بود. (1)