Skip to content

Commit 860a149

Browse files
author
Saeid Darvish
committed
edited l01
1 parent 9996e67 commit 860a149

3 files changed

Lines changed: 11 additions & 13 deletions

File tree

source/conf.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,6 @@
2727

2828
html_theme = 'sphinx_minoo_theme'
2929
html_theme_path = ["_templates"]
30+
html_title = 'کتاب ' + project
31+
3032
html_static_path = ['_static']

source/index.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
:maxdepth: 6
2929

3030
preface
31-
lessons/l01
31+
lessons/l01-introduction-to-python
3232
lessons/l02
3333
lessons/l03
3434
lessons/l04

source/lessons/l01.rst renamed to source/lessons/l01-introduction-to-python.rst

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
.. role:: emoji-size
22

33
.. meta::
4-
:description: کتاب آنلاین و آزاد آموزش زبان برنامه‌نویسی پایتون به فارسی - درس یکم آشنایی با پایتون
4+
:description: پایتون به فارسی - کتاب آنلاین و آزاد آموزش زبان برنامه‌نویسی پایتون - درس یکم آشنایی با پایتون
55
:keywords: معرفی پایتون, تاریخچه پایتون, کارایی پایتون, نسخه های پایتون, ویژگی های پایتون, آشنایی با پایتون, آموزش, آموزش پایتون, آموزش برنامه نویسی, پایتون
66

77

8-
98
.. _lesson_header:
109

1110
درس ۰۱: آشنایی با زبان برنامه‌نویسی پایتون
@@ -21,6 +20,8 @@
2120

2221
این درس با بیان تاریخچه ایجاد **زبان برنامه‌نویسی پایتون** شروع و با توصیفی کوتاه و شرح ویژگی‌های آن ادامه می‌یابد؛ در شرح ویژگی‌ها سعی شده است کمی نیز توضیحات غیرپایتونی برای درک بهتر موضوعات ارایه گردد. همچنین در مورد کارایی پایتون و سابقه نسخه‌های آن نیز صحبت شده است. هدف این درس ایجاد یک پیش‌زمینه‌ بدون ابهام از پایتون است! به این امید که مفید باشد و بتواند شما را به یادگیری این زبان تشویق کند :emoji-size:`😉`.
2322

23+
24+
2425
:emoji-size:`` سطح: پایه
2526

2627
----
@@ -71,11 +72,11 @@
7172
تنها زبان قابل فهم و اجرا برای هر ماشین (یا رایانه‌)، زبان ماشین (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)>`_) انجام می‌پذیرد.
7273

7374

74-
یک کامپایلر (در زبان‌های کامپایلری مانند C) تمامی سطرهای سورس کد برنامه را به صورت یکجا خوانده و سپس با ساخت یک فایل جدید و مستقل از سورس کد با نام «کد مقصد یا آبجکت کد» (Object Code) یا فایل اجرایی (Executable) عمل ترجمه به زبان ماشین را پایان می‌بخشد. برنامه حاصل از کامپایلر توانایی هر چند بار اجرا در رایانه مقصد، بدون نیاز به کامپایل دوباره را دارد، اما فاقد حمل‌پذیری بوده و برای اجرا در ماشینی با معماری متفاوت نیازمند کامپایل دوباره با یک کامپایلر سازگار می‌باشد. البته این ضعف در زبان‌هایی به مانند Java ‌با ایجاد بایت‌کد کاملا از بین رفته است. در طرفی دیگر، یک مفسر (در زبان‌های تفسیر‌ی) سورس کد برنامه را به صورت سطر به سطر می‌خواند و هر سطر را به صورت جداگانه به زبان ماشین ترجمه و سپس بلافاصله آن را اجرا می‌کند. به این صورت که هنگامی یک سطر در حال اجراست در همان لحظه سطر بعدی در حال ترجمه به زبان ماشین می‌باشد. برنامه‌های نوشته شده با زبان‌های برنامه‌نویسی تفسیر‌ی برای هر بار اجرا در رایانه هدف نیاز به تفسیر دوباره دارند. این تفاوت عملکرد گرچه باعث کاهش سرعت اجرای زبان‌های تفسیر‌ی نسبت به کامپایلری می‌شود ولی خواندن سطر به سطر کدها در مفسر علاوه بر قابلیت تشخیص خطای بهتر، این امکان را بوجود می‌آورد که بتوان حتی در زمان اجرا نیز سورس کد را ویرایش و تغییر داد. این دسته از زبان‌ها در مواقعی که پیوسته نیاز به ویرایش کد و اعمال تغییر است، بسیار مورد توجه قرار گرفته‌اند.
75+
یک کامپایلر (در زبان‌های کامپایلری مانند C) تمامی سطرهای سورس کد برنامه را به صورت یکجا خوانده و سپس با ساخت یک فایل جدید و مستقل از سورس کد با نام «کد مقصد یا آبجکت کد» (Object Code) یا فایل اجرایی (Executable) عمل ترجمه به زبان ماشین را پایان می‌بخشد. خروجی حاصل از کامپایلر توانایی هر چند بار اجرا در رایانه مقصد، بدون نیاز به کامپایل دوباره را دارد، اما فاقد حمل‌پذیری بوده و برای اجرا در ماشینی با معماری متفاوت نیازمند کامپایل دوباره با یک کامپایلر سازگار می‌باشد. البته این ضعف در زبان‌هایی به مانند Java ‌با ایجاد بایت‌کد (ByteCode) کاملا از بین رفته است. در طرفی دیگر، یک مفسر (در زبان‌های تفسیر‌ی) سورس کد برنامه را به صورت سطر به سطر می‌خواند و هر سطر را به صورت جداگانه به زبان ماشین ترجمه و سپس بلافاصله آن را اجرا می‌کند. به این صورت که هنگامی یک سطر در حال اجراست در همان لحظه سطر بعدی در حال ترجمه به زبان ماشین می‌باشد. برنامه‌های نوشته شده با زبان‌های برنامه‌نویسی تفسیر‌ی برای هر بار اجرا در رایانه هدف نیاز به تفسیر دوباره دارند. این تفاوت عملکرد گرچه باعث کاهش سرعت اجرای زبان‌های تفسیر‌ی نسبت به کامپایلری می‌شود ولی خواندن سطر به سطر کدها در مفسر علاوه بر قابلیت تشخیص خطای بهتر، این امکان را بوجود می‌آورد که بتوان حتی در زمان اجرا نیز سورس کد را ویرایش و تغییر داد. این دسته از زبان‌ها در مواقعی که پیوسته نیاز به ویرایش کد و اعمال تغییر است، بسیار مورد توجه قرار گرفته‌اند.
7576

76-
**پایتون** در دسته زبان‌های تفسیری قرار می‌گیرد که در ادامه با خصوصیات آن بیشتر آشنا خواهید شد. کدها و دستورات تهیه شده به این زبان برای به اجرا در آمدن توسط پردازنده (CPU) ماشین به یک مفسر نیاز دارد. تا‌کنون پیاده‌سازی‌های گوناگونی و با اهداف متفاوتی از مفسر پایتون توسعه یافته است. در این بین، CPython (سی‌پایتون) پیاده‌سازی استاندارد و رسمی مفسر پایتون می‌باشد که با استفاده از زبان برنامه‌نویسی C توسعه می‌یابد. توسط CPython می‌توان علاوه بر کدهای پایتون، کدهای توسعه یافته به‌‌ زبان‌های C و ++C را نیز در قالب یک پروژه به اجرا در آورد.
77+
**پایتون** در دسته زبان‌های تفسیری قرار می‌گیرد که در ادامه با خصوصیات آن بیشتر آشنا خواهید شد. کدها و دستورات تهیه شده به این زبان برای به اجرا درآمدن توسط پردازنده (CPU) ماشین به یک مفسر نیاز دارد. تا‌کنون پیاده‌سازی‌های گوناگونی و با اهداف متفاوتی از مفسر پایتون توسعه یافته است. در این بین، CPython (سی‌پایتون) پیاده‌سازی استاندارد و رسمی مفسر پایتون می‌باشد که با استفاده از زبان برنامه‌نویسی C توسعه می‌یابد. توسط CPython می‌توان علاوه بر کدهای پایتون، کدهای توسعه یافته به‌‌ زبان‌های C و ++C را نیز در قالب یک پروژه به اجرا درآورد.
7778

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]_
7980

8081
با این توضیحات اکنون می‌دانیم که مفسر پایتون وظیفه خواندن سورس کد برنامه، ترجمه به زبان ماشین و در نهایت اجرای آن را برعهده دارد. عمل ترجمه و اجرای سورس کد توسط CPython که مورد توجه این کتاب است، در دو مرحله متوالی زیر خلاصه می‌شود:
8182

@@ -135,7 +136,7 @@
135136

136137
**پایتون** یک زبان برنامه‌نویسی توسعه‌پذیر (Extensible) است. کدهای نوشته شده با پایتون را می‌توان به دیگر سورس کدهای این زبان افزود و همچنین می‌توان از کتابخانه‌ها و کدهای نوشته شده با دیگر زبان‌های برنامه‌نویسی در میان کدهای پایتون استفاده کرد (مانند C و ++C در پیاده‌سازی CPython یا Java در پیاده‌سازی Jython).
137138

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 در مدت یک سال قادر به تکمیل آن نخواهند بود!
139140

140141
**پایتون** یک زبان حساس به حرف (Case Sensitive) است. در این نوع زبان‌ها (مانند C ،C++ ،Java ،Perl و غیره...) بین حروف کوچک (Lowercase) و بزرگ (Uppercase) به مانند a و A تفاوت وجود دارد. با توجه به این موضوع، مفسر پایتون بین کلمات True ،true و TRUE تمایز می‌گذارد.
141142

@@ -175,7 +176,7 @@
175176
176177
.. [#f2] ”...در دسامبر سال ۱۹۸۹ دنبال یک پروژه‌ برنامه‌نویسی به عنوان سرگرمی می‌گشتم تا اوقات فراغت به وجود آمده از تعطیلات کریسمس را پر کنم. دفتر کارم (یک آزمایشگاه تحقیقاتی دولتی در آمستردام) بسته بود، ولی یک رایانه‌ شخصی داشتم و چیزی بیش از این هم در اختیارم نبود. تصمیم گرفتم تا مفسری برای یک زبان اسکریپتی جدید بنویسم. قبلا در مورد آن فکر کرده بودم: از نسل زبان ABC و جذاب برای هکرهای Unix/C. نام پایتون را برای عنوان کاری این پروژه انتخاب کردم، کمی گستاخانه ( و یک طرفدار بزرگ Monty Python’s Flying Circus)...“ - نقل از آقای روسوم [`منبع <http://www.python.org/doc/essays/foreword>`_]
177178
178-
.. [#f3] در دروس آینده به انواع داده (Data Types) در زبان پایتون به صورت کامل پرداخته می‌شود. البته خواهید دید که این مبحث در پایتون با عنوان «انواع شی» ارايه می‌گردد.
179+
.. [#f3] در دروس آینده به انواع داده (Data Types) در زبان پایتون به صورت کامل پرداخته می‌شود.
179180
180181
181182
.. [#f4] برای مشاهده‌ موارد استفاده بیشتر پایتون می‌توانید به صفحه‌های [`درباره پایتون <http://www.python.org/about/success>`_] و [`ویکی پایتون <http://wiki.python.org/moin/OrganizationsUsingPython>`__] مراجعه نمایید.
@@ -186,14 +187,10 @@
186187
187188
.. [#f7] متغیر در پایتون، نامی است که به یک شی (Object) در حافظه اشاره می‌کند. (در دروس آینده به آن پرداخته خواهد شد)
188189
189-
.. [#f8] از نسخه 2.0 و جدیدتر به پایتون (پیاده‌سازی CPython) افزوده شده است.
190-
191190
.. [#f9] دسته‌بندی رایج دیگر، بر مبنای نسل (Generation) است. زبان‌های نسل اول زبان‌های ماشین، نسل دوم زبان‌های اسمبلی، نسل سوم زبان‌های سطح بالایی مانند C# ،C++ ،C ،Lisp ،Cobol ،Fortran و Java هستند. زبان‌های نسل چهارم آن‌هایی هستند که برای کاربرد‌هایی خاص طراحی شده‌اند مانند NOMAD برای تولید گزارش، SQL برای پرس و جوهای (Queries) پایگاه‌ داده و Postscript برای قالب‌بندی متن. اصطلاح زبان نسل پنجم به زبان‌های مبتنی بر منطق و شرط (logic- and constraint-based) مانند Prolog و OPS5 گفته می‌شود. (آورده شده از کتاب: کامپایلرها... نوشته Aho و...، ویرایش دوم، صفحه ۱۳) - زبان پایتون یک زبان همه منظوره است و در دسته زبان‌های نسل سوم قرار می‌گیرد،‌ هر چند که نسبت به برخی از زبان‌های این نسل سطح بالاتری دارد.
192191
193192
.. [#f10] با توجه به نوشته‌ Jeremy Jones با عنوان `Python's (Weak) Functional Programming Paradigm <http://archive.oreilly.com/pub/post/pythons_weak_functional_progra.html>`_.
194193
195-
.. [#f11] منظور از ماشین مجازی در اینجا ”Process Virtual Machine“ است و نباید با «ماشین مجازی سیستمی» (System Virtual Machine) اشتباه گرفته شود.
196-
197194
.. [#f12] برای نمونه: این کار در زبان Pascal توسط کلمات Begin و End، در زبان‌های C و Java توسط آکولاد ``{ }`` صورت می‌گیرد.
198195
199196
.. [#f13] PEPs یا Python Enhancement Proposals (طرح‌های توسعه‌ پایتون) در واقع مجموعه اسنادی است که تیم توسعه‌ پایتون از آن‌ها برای توصیف شیوه‌ طراحی، ویژگی‌های جدید یا منطق، فرآیند و راهبردهای آینده پایتون استفاده می‌کنند. فهرست: `PEP 0 <http://www.python.org/dev/peps>`_
@@ -209,7 +206,6 @@
209206

210207
:emoji-size:`😊` امیدوارم مفید بوده باشه
211208

212-
`لطفا دیدگاه و سوال‌های مرتبط با این درس خود را در کدرز مطرح نمایید. <http://coderz.ir/python-tutorial-introduction/>`_
213209

214210

215211

0 commit comments

Comments
 (0)