|
1 | 1 | .. role:: emoji-size |
2 | 2 |
|
3 | 3 | .. meta:: |
4 | | - :description: کتاب آنلاین و آزاد آموزش زبان برنامهنویسی پایتون به فارسی - درس یکم آشنایی با پایتون |
| 4 | + :description: پایتون به فارسی - کتاب آنلاین و آزاد آموزش زبان برنامهنویسی پایتون - درس یکم آشنایی با پایتون |
5 | 5 | :keywords: معرفی پایتون, تاریخچه پایتون, کارایی پایتون, نسخه های پایتون, ویژگی های پایتون, آشنایی با پایتون, آموزش, آموزش پایتون, آموزش برنامه نویسی, پایتون |
6 | 6 |
|
7 | 7 |
|
8 | | - |
9 | 8 | .. _lesson_header: |
10 | 9 |
|
11 | 10 | درس ۰۱: آشنایی با زبان برنامهنویسی پایتون |
|
21 | 20 |
|
22 | 21 | این درس با بیان تاریخچه ایجاد **زبان برنامهنویسی پایتون** شروع و با توصیفی کوتاه و شرح ویژگیهای آن ادامه مییابد؛ در شرح ویژگیها سعی شده است کمی نیز توضیحات غیرپایتونی برای درک بهتر موضوعات ارایه گردد. همچنین در مورد کارایی پایتون و سابقه نسخههای آن نیز صحبت شده است. هدف این درس ایجاد یک پیشزمینه بدون ابهام از پایتون است! به این امید که مفید باشد و بتواند شما را به یادگیری این زبان تشویق کند :emoji-size:`😉`. |
23 | 22 |
|
| 23 | + |
| 24 | + |
24 | 25 | :emoji-size:`✔` سطح: پایه |
25 | 26 |
|
26 | 27 | ---- |
|
71 | 72 | تنها زبان قابل فهم و اجرا برای هر ماشین (یا رایانه)، زبان ماشین (Machine Language) خاص آن است که متناسب با معماری پردازنده آن تعیین میشود. درک و پیادهسازی این زبان برای انسان کاری طاقت فرساست، از این رو با پیشرفت دانش پردازش داده، زبانهای دیگر برنامهنویسی که به زبان انسان نزدیکتر هستند، توسعه یافته که تمامی آنها پیش از اجرا میبایست به زبان ماشین ترجمه شوند. چگونگی فرآیند این ترجمه، عاملی است که سبب تفاوت زبانهای برنامهنویسی و کاربرد آنها شده است. عمل ترجمه برای کدهای اسمبلی توسط اسمبلر (`Assembler <http://en.wikipedia.org/wiki/Assembly_language#Assembler>`_) و برای باقی زبانها توسط کامپایلر (`Compiler <http://en.wikipedia.org/wiki/Compiler>`_) یا مفسر (`Interpreter <http://en.wikipedia.org/wiki/Interpreter_(computing)>`_) انجام میپذیرد. |
72 | 73 |
|
73 | 74 |
|
74 | | -یک کامپایلر (در زبانهای کامپایلری مانند C) تمامی سطرهای سورس کد برنامه را به صورت یکجا خوانده و سپس با ساخت یک فایل جدید و مستقل از سورس کد با نام «کد مقصد یا آبجکت کد» (Object Code) یا فایل اجرایی (Executable) عمل ترجمه به زبان ماشین را پایان میبخشد. برنامه حاصل از کامپایلر توانایی هر چند بار اجرا در رایانه مقصد، بدون نیاز به کامپایل دوباره را دارد، اما فاقد حملپذیری بوده و برای اجرا در ماشینی با معماری متفاوت نیازمند کامپایل دوباره با یک کامپایلر سازگار میباشد. البته این ضعف در زبانهایی به مانند Java با ایجاد بایتکد کاملا از بین رفته است. در طرفی دیگر، یک مفسر (در زبانهای تفسیری) سورس کد برنامه را به صورت سطر به سطر میخواند و هر سطر را به صورت جداگانه به زبان ماشین ترجمه و سپس بلافاصله آن را اجرا میکند. به این صورت که هنگامی یک سطر در حال اجراست در همان لحظه سطر بعدی در حال ترجمه به زبان ماشین میباشد. برنامههای نوشته شده با زبانهای برنامهنویسی تفسیری برای هر بار اجرا در رایانه هدف نیاز به تفسیر دوباره دارند. این تفاوت عملکرد گرچه باعث کاهش سرعت اجرای زبانهای تفسیری نسبت به کامپایلری میشود ولی خواندن سطر به سطر کدها در مفسر علاوه بر قابلیت تشخیص خطای بهتر، این امکان را بوجود میآورد که بتوان حتی در زمان اجرا نیز سورس کد را ویرایش و تغییر داد. این دسته از زبانها در مواقعی که پیوسته نیاز به ویرایش کد و اعمال تغییر است، بسیار مورد توجه قرار گرفتهاند. |
| 75 | +یک کامپایلر (در زبانهای کامپایلری مانند C) تمامی سطرهای سورس کد برنامه را به صورت یکجا خوانده و سپس با ساخت یک فایل جدید و مستقل از سورس کد با نام «کد مقصد یا آبجکت کد» (Object Code) یا فایل اجرایی (Executable) عمل ترجمه به زبان ماشین را پایان میبخشد. خروجی حاصل از کامپایلر توانایی هر چند بار اجرا در رایانه مقصد، بدون نیاز به کامپایل دوباره را دارد، اما فاقد حملپذیری بوده و برای اجرا در ماشینی با معماری متفاوت نیازمند کامپایل دوباره با یک کامپایلر سازگار میباشد. البته این ضعف در زبانهایی به مانند Java با ایجاد بایتکد (ByteCode) کاملا از بین رفته است. در طرفی دیگر، یک مفسر (در زبانهای تفسیری) سورس کد برنامه را به صورت سطر به سطر میخواند و هر سطر را به صورت جداگانه به زبان ماشین ترجمه و سپس بلافاصله آن را اجرا میکند. به این صورت که هنگامی یک سطر در حال اجراست در همان لحظه سطر بعدی در حال ترجمه به زبان ماشین میباشد. برنامههای نوشته شده با زبانهای برنامهنویسی تفسیری برای هر بار اجرا در رایانه هدف نیاز به تفسیر دوباره دارند. این تفاوت عملکرد گرچه باعث کاهش سرعت اجرای زبانهای تفسیری نسبت به کامپایلری میشود ولی خواندن سطر به سطر کدها در مفسر علاوه بر قابلیت تشخیص خطای بهتر، این امکان را بوجود میآورد که بتوان حتی در زمان اجرا نیز سورس کد را ویرایش و تغییر داد. این دسته از زبانها در مواقعی که پیوسته نیاز به ویرایش کد و اعمال تغییر است، بسیار مورد توجه قرار گرفتهاند. |
75 | 76 |
|
76 | | -**پایتون** در دسته زبانهای تفسیری قرار میگیرد که در ادامه با خصوصیات آن بیشتر آشنا خواهید شد. کدها و دستورات تهیه شده به این زبان برای به اجرا در آمدن توسط پردازنده (CPU) ماشین به یک مفسر نیاز دارد. تاکنون پیادهسازیهای گوناگونی و با اهداف متفاوتی از مفسر پایتون توسعه یافته است. در این بین، CPython (سیپایتون) پیادهسازی استاندارد و رسمی مفسر پایتون میباشد که با استفاده از زبان برنامهنویسی C توسعه مییابد. توسط CPython میتوان علاوه بر کدهای پایتون، کدهای توسعه یافته به زبانهای C و ++C را نیز در قالب یک پروژه به اجرا در آورد. |
| 77 | +**پایتون** در دسته زبانهای تفسیری قرار میگیرد که در ادامه با خصوصیات آن بیشتر آشنا خواهید شد. کدها و دستورات تهیه شده به این زبان برای به اجرا درآمدن توسط پردازنده (CPU) ماشین به یک مفسر نیاز دارد. تاکنون پیادهسازیهای گوناگونی و با اهداف متفاوتی از مفسر پایتون توسعه یافته است. در این بین، CPython (سیپایتون) پیادهسازی استاندارد و رسمی مفسر پایتون میباشد که با استفاده از زبان برنامهنویسی C توسعه مییابد. توسط CPython میتوان علاوه بر کدهای پایتون، کدهای توسعه یافته به زبانهای C و ++C را نیز در قالب یک پروژه به اجرا درآورد. |
77 | 78 |
|
78 | | -از دیگر پیادهسازی های مهم مفسر زبان پایتون میتوان به `Jython <http://www.jython.org/>`_ (خاص ماشین مجازی جاوا)، `IronPython <http://ironpython.net/>`_ (خاص چارچوب NET. مایکروسافت)، `PyPy <http://pypy.org/>`_ (با هدف سرعت اجرای بیشتر)، `Stackless <http://www.stackless.com/>`_ (با هدف اجرای بهتر برنامههای چندنخی - Multithread) اشاره نمود. [#f5]_ |
| 79 | +از دیگر پیادهسازی های مهم مفسر پایتون میتوان به `Jython <http://www.jython.org/>`_ (خاص ماشین مجازی جاوا)، `IronPython <http://ironpython.net/>`_ (خاص چارچوب NET. مایکروسافت)، `PyPy <http://pypy.org/>`_ (با هدف سرعت اجرای بیشتر)، `Stackless <http://www.stackless.com/>`_ (با هدف اجرای بهتر برنامههای چندنخی - Multithread) اشاره نمود. [#f5]_ |
79 | 80 |
|
80 | 81 | با این توضیحات اکنون میدانیم که مفسر پایتون وظیفه خواندن سورس کد برنامه، ترجمه به زبان ماشین و در نهایت اجرای آن را برعهده دارد. عمل ترجمه و اجرای سورس کد توسط CPython که مورد توجه این کتاب است، در دو مرحله متوالی زیر خلاصه میشود: |
81 | 82 |
|
|
135 | 136 |
|
136 | 137 | **پایتون** یک زبان برنامهنویسی توسعهپذیر (Extensible) است. کدهای نوشته شده با پایتون را میتوان به دیگر سورس کدهای این زبان افزود و همچنین میتوان از کتابخانهها و کدهای نوشته شده با دیگر زبانهای برنامهنویسی در میان کدهای پایتون استفاده کرد (مانند C و ++C در پیادهسازی CPython یا Java در پیادهسازی Jython). |
137 | 138 |
|
138 | | -**پایتون** دارای دستور زبانی تمیز و خوانایی (Readability) بالای کد است. خوانایی در طراحی پایتون مورد تاکید بوده و در کنار شیگرایی از مهمترین ویژگیهای یک کد به جهت استفاده مجدد میباشد. پایتون به مانند زبان ABC از روش «تورفتگی» بوسیله فضاهای خالی برای بلاکبندی [#f12]_ استفاده میکند. در پایتون اجباری به استفاده از نقطه ویرگول (Semicolon) ``;`` و برخی پرانتز گذاریها نمیباشد و البته وجود انواع داده (Data Types) - البته به بیانی درستتر «انواع شی» - متنوع و نیز پویایی پایتون موجب کمتر شدن حجم کدنویسی و صرفهجویی در زمان توسعه نسبت به زبانهایی به مانند C++ ،C و حتی Java میشود. `تحقیقات <http://www.python.org/doc/essays/comparisons>`_ نشان میدهند: کاری که یک برنامهنویس پایتون میتواند در مدت زمان دو ماه به انجام برساند، دو برنامهنویس ++C در مدت یک سال قادر به تکمیل آن نخواهند بود! |
| 139 | +**پایتون** دارای دستور زبانی تمیز و خوانایی (Readability) بالای کد است. خوانایی در طراحی پایتون مورد تاکید بوده و در کنار شیگرایی از مهمترین ویژگیهای یک کد به جهت استفاده مجدد میباشد. پایتون به مانند زبان ABC از روش «تورفتگی» بوسیله فضاهای خالی برای بلاکبندی [#f12]_ استفاده میکند. در پایتون اجباری به استفاده از نقطه ویرگول (Semicolon) ``;`` و برخی پرانتز گذاریها نمیباشد و البته وجود انواع داده (Data Types) متنوع و نیز پویایی پایتون موجب کمتر شدن حجم کدنویسی و صرفهجویی در زمان توسعه نسبت به زبانهایی به مانند C++ ،C و حتی Java میشود. `تحقیقات <http://www.python.org/doc/essays/comparisons>`_ نشان میدهند: کاری که یک برنامهنویس پایتون میتواند در مدت زمان دو ماه به انجام برساند، دو برنامهنویس ++C در مدت یک سال قادر به تکمیل آن نخواهند بود! |
139 | 140 |
|
140 | 141 | **پایتون** یک زبان حساس به حرف (Case Sensitive) است. در این نوع زبانها (مانند C ،C++ ،Java ،Perl و غیره...) بین حروف کوچک (Lowercase) و بزرگ (Uppercase) به مانند a و A تفاوت وجود دارد. با توجه به این موضوع، مفسر پایتون بین کلمات True ،true و TRUE تمایز میگذارد. |
141 | 142 |
|
|
175 | 176 |
|
176 | 177 | .. [#f2] ”...در دسامبر سال ۱۹۸۹ دنبال یک پروژه برنامهنویسی به عنوان سرگرمی میگشتم تا اوقات فراغت به وجود آمده از تعطیلات کریسمس را پر کنم. دفتر کارم (یک آزمایشگاه تحقیقاتی دولتی در آمستردام) بسته بود، ولی یک رایانه شخصی داشتم و چیزی بیش از این هم در اختیارم نبود. تصمیم گرفتم تا مفسری برای یک زبان اسکریپتی جدید بنویسم. قبلا در مورد آن فکر کرده بودم: از نسل زبان ABC و جذاب برای هکرهای Unix/C. نام پایتون را برای عنوان کاری این پروژه انتخاب کردم، کمی گستاخانه ( و یک طرفدار بزرگ Monty Python’s Flying Circus)...“ - نقل از آقای روسوم [`منبع <http://www.python.org/doc/essays/foreword>`_] |
177 | 178 |
|
178 | | -.. [#f3] در دروس آینده به انواع داده (Data Types) در زبان پایتون به صورت کامل پرداخته میشود. البته خواهید دید که این مبحث در پایتون با عنوان «انواع شی» ارايه میگردد. |
| 179 | +.. [#f3] در دروس آینده به انواع داده (Data Types) در زبان پایتون به صورت کامل پرداخته میشود. |
179 | 180 |
|
180 | 181 |
|
181 | 182 | .. [#f4] برای مشاهده موارد استفاده بیشتر پایتون میتوانید به صفحههای [`درباره پایتون <http://www.python.org/about/success>`_] و [`ویکی پایتون <http://wiki.python.org/moin/OrganizationsUsingPython>`__] مراجعه نمایید. |
|
186 | 187 |
|
187 | 188 | .. [#f7] متغیر در پایتون، نامی است که به یک شی (Object) در حافظه اشاره میکند. (در دروس آینده به آن پرداخته خواهد شد) |
188 | 189 |
|
189 | | -.. [#f8] از نسخه 2.0 و جدیدتر به پایتون (پیادهسازی CPython) افزوده شده است. |
190 | | -
|
191 | 190 | .. [#f9] دستهبندی رایج دیگر، بر مبنای نسل (Generation) است. زبانهای نسل اول زبانهای ماشین، نسل دوم زبانهای اسمبلی، نسل سوم زبانهای سطح بالایی مانند C# ،C++ ،C ،Lisp ،Cobol ،Fortran و Java هستند. زبانهای نسل چهارم آنهایی هستند که برای کاربردهایی خاص طراحی شدهاند مانند NOMAD برای تولید گزارش، SQL برای پرس و جوهای (Queries) پایگاه داده و Postscript برای قالببندی متن. اصطلاح زبان نسل پنجم به زبانهای مبتنی بر منطق و شرط (logic- and constraint-based) مانند Prolog و OPS5 گفته میشود. (آورده شده از کتاب: کامپایلرها... نوشته Aho و...، ویرایش دوم، صفحه ۱۳) - زبان پایتون یک زبان همه منظوره است و در دسته زبانهای نسل سوم قرار میگیرد، هر چند که نسبت به برخی از زبانهای این نسل سطح بالاتری دارد. |
192 | 191 |
|
193 | 192 | .. [#f10] با توجه به نوشته Jeremy Jones با عنوان `Python's (Weak) Functional Programming Paradigm <http://archive.oreilly.com/pub/post/pythons_weak_functional_progra.html>`_. |
194 | 193 |
|
195 | | -.. [#f11] منظور از ماشین مجازی در اینجا ”Process Virtual Machine“ است و نباید با «ماشین مجازی سیستمی» (System Virtual Machine) اشتباه گرفته شود. |
196 | | -
|
197 | 194 | .. [#f12] برای نمونه: این کار در زبان Pascal توسط کلمات Begin و End، در زبانهای C و Java توسط آکولاد ``{ }`` صورت میگیرد. |
198 | 195 |
|
199 | 196 | .. [#f13] PEPs یا Python Enhancement Proposals (طرحهای توسعه پایتون) در واقع مجموعه اسنادی است که تیم توسعه پایتون از آنها برای توصیف شیوه طراحی، ویژگیهای جدید یا منطق، فرآیند و راهبردهای آینده پایتون استفاده میکنند. فهرست: `PEP 0 <http://www.python.org/dev/peps>`_ |
|
209 | 206 |
|
210 | 207 | :emoji-size:`😊` امیدوارم مفید بوده باشه |
211 | 208 |
|
212 | | -`لطفا دیدگاه و سوالهای مرتبط با این درس خود را در کدرز مطرح نمایید. <http://coderz.ir/python-tutorial-introduction/>`_ |
213 | 209 |
|
214 | 210 |
|
215 | 211 |
|
|
0 commit comments