جلسه اول - دوره آموزش زبان برنامه نویسی C | سطح مقدماتی - متوسط

Yashar Mahmoudnia
17 Jun 202423:17

Summary

TLDRThe video script delves into the history and significance of the C programming language, highlighting its origins from the B language, developed by Ken Thompson in the 1970s, and its further development by Dennis Ritchie. It discusses the language's features, including its general-purpose nature, low-level access to memory, and portability. The script also covers the evolution of C standards from ANSI C89 to the upcoming C2X, emphasizing the language's continued relevance in various software and systems, despite the emergence of newer programming languages.

Takeaways

  • 😀 The session begins with an introduction to the history of the C programming language and its significance in the real world.
  • 📚 C language has a rich history, evolving from the B language, with Dennis Ritchie being credited as its creator and Ken Thompson as a key contributor.
  • 🔍 Dennis Ritchie is known as the 'father of the C programming language' and was also involved in the development of UNIX, while Ken Thompson is recognized for his work on UNIX and the B language.
  • 🗓 The C programming language was officially standardized with the ANSI X3.159-1989 standard, also known as ISO/IEC 9899:1990, which was a significant milestone for the language.
  • 💡 C is considered a 'general-purpose language' due to its widespread use in various software and systems, including operating systems and services.
  • 🔧 C is described as a 'middle-level language' offering a balance between high-level and low-level programming, providing both high performance and hardware control.
  • 🚀 The language's 'portability' is highlighted, emphasizing its ability to run on different platforms and architectures without the need for recompilation for each.
  • 🔄 C is a compiled language, which contributes to its speed and efficiency, and is contrasted with assembly language, which is architecture-specific.
  • 🌐 The script discusses the 'multi-paradigm' nature of C, meaning it supports various programming paradigms such as procedural, imperative, functional, and object-oriented.
  • 🌟 The ongoing relevance and critical role of C in modern programming are emphasized, despite the existence of newer languages, due to its performance and control capabilities.
  • 📈 The script also touches on the evolution of standards for the C language, with updates and revisions aimed at addressing issues and adding new features over time.

Q & A

  • What is the main topic of the first session of the C language training course?

    -The main topic of the first session is to explore the history of the C language, its real-world applications, services, and software that still use the C programming language, and to review the standards of the C programming language.

  • Who is credited with the creation of the C programming language?

    -Dennis Ritchie is credited with the creation of the C programming language.

  • What was the original purpose of the B language from which C language derived?

    -The B language was created by Ken Thompson in the 1970s and was used for system programming, which C later improved upon by adding features not present in B.

  • What is the significance of Dennis Ritchie in the history of C programming language?

    -Dennis Ritchie is considered the father of the C programming language and was also involved in the development of UNIX alongside Ken Thompson.

  • What does the term 'General Purpose Language' mean in the context of C?

    -A 'General Purpose Language' refers to the versatility of C, which can be used to develop a wide range of software, systems, and services, including operating systems and applications that are still in use today.

  • How is the C language described in terms of its level of access and control over hardware?

    -The C language is described as a 'Middle-Level Language' because it provides a balance between high-level and low-level programming, allowing for efficient hardware access and control.

  • What is the concept of 'portability' in the context of C programming language?

    -Portability in C refers to the ability of C code to run on different platforms and architectures without needing to be rewritten for each specific environment, unlike assembly language which is sensitive to architecture.

  • What are some of the paradigms supported by the C programming language?

    -C supports multiple paradigms including procedural programming, imperative programming, and to some extent, object-oriented programming through the use of structs and functions.

  • Why is the C programming language still relevant and widely used today?

    -The C programming language is still relevant due to its performance, efficiency, and the vast amount of legacy systems and software that rely on it, as well as its role in the development of many modern programming languages and systems.

  • What is the role of standards in the development and usage of the C programming language?

    -Standards, such as those provided by the American National Standards Institute (ANSI) and the International Organization for Standardization (ISO), define the rules and features of the C language, ensuring consistency and compatibility across different implementations.

  • Can you provide an example of how a new feature was introduced in the C language through a standard?

    -An example is the introduction of the Boolean data type and headers in the C99 standard, which added new features and improved the language's capabilities.

  • What is the importance of the C language in the development of modern operating systems and software?

    -The C language has been fundamental in the development of many operating systems like UNIX and Windows, as well as numerous software applications and protocols, showcasing its enduring importance in the field of computing.

Outlines

00:00

📚 Introduction to C Language History and Standards

The video script begins with an introduction to the history of the C programming language, its origin, and its significance in the real world. It mentions the services and software that still utilize C. The script aims to explore the history of C, its development by Dennis Ritchie as a successor to the B language in the 1970s, and its role in the creation of UNIX by Ken Thompson and Ritchie. The segment also touches on the general concept of standards in programming languages and sets the stage for a deeper dive into the capabilities and features of C in subsequent discussions.

05:03

💻 C Language Capabilities and Its Role in Programming

This paragraph delves into the capabilities of the C language, discussing its status as a general-purpose language and its low-level capabilities. It highlights C's efficiency and portability, allowing for close interaction with hardware and memory management. The script explains that C is a compiled language, which contributes to its speed, and contrasts it with assembly languages, which are architecture-specific. The discussion also covers the cross-platform compatibility of C, its ability to be used in various environments without the need for re-coding, and introduces the concept of C as a portable assembly language. The paragraph concludes with an introduction to the multi-paradigm nature of C, its support for procedural, imperative, functional, and object-oriented programming approaches.

10:05

🛠️ C Language's Continued Relevance and Influence

The script continues by emphasizing the ongoing relevance of the C programming language in various systems, databases, network protocols, and security discussions. It provides examples of operating systems like UNIX and Windows, which have been developed using C and assembly language, and notes the evolution of these systems over time. The paragraph also mentions the influence of C on derived languages such as C++, Objective-C, C#, Java, JavaScript, and PHP, and how C has been instrumental in the development of protocols and servers. The discussion underscores the critical role of C in the foundation of modern programming languages and its enduring presence in software and system development.

15:08

📘 Evolution of C Language Standards

This section of the script focuses on the evolution of C language standards, starting with the first standard, ANSI X3.159-1989, which was later adopted by ISO as ISO/IEC 9899:1990. The script outlines the development of subsequent standards, including C95, which addressed issues from C90 and introduced new features, and C99, which further added capabilities. The discussion continues with the release of C11 in 2011, which brought additional features and improvements. The script also mentions the upcoming C2x standard, which is expected to be finalized in the near future, and invites viewers to explore these standards in more detail to understand the language's development and capabilities.

20:09

🔍 Exploring C Language Concepts and Features

The final paragraph provides guidance on exploring the concepts and features of the C language, including terms like 'C-like', 'C syntax', 'C codebase', and 'C implementation'. It explains these terms and how they relate to the language's syntax, structure, and adaptations in various software and systems. The script uses the example of the Windows kernel, which has components written in C, C++, assembly, and Rust, to illustrate the language's pervasive influence. It concludes by encouraging viewers to familiarize themselves with these concepts and to ask questions in a group setting for further clarification.

Mindmap

Keywords

💡C programming language

The C programming language, often referred to simply as 'C', is a general-purpose, procedural, imperative computer programming language developed in the early 1970s by Ken Thompson and Dennis Ritchie. It is the main theme of the video, discussing its history, features, and impact on the software development world. The script mentions that C has been used in various systems and applications, emphasizing its importance and longevity in the programming field.

💡Dennis Ritchie

Dennis Ritchie is credited as the creator of the C programming language. His contribution is highlighted in the script as being fundamental to the development of modern programming practices. The video mentions Ritchie's role in developing UNIX alongside Ken Thompson, which was significantly influenced by the C language.

💡UNIX

UNIX is a powerful, multi-user and multitasking operating system. The script discusses UNIX as an example of a system that has been developed using the C programming language, showcasing C's capability in creating robust and efficient operating systems.

💡Portability

Portability in the context of programming refers to the ability of a program to be compiled and run on different platforms without significant changes. The script mentions portability as one of the key features of the C language, allowing programs written in C to run across various operating systems and architectures.

💡Standards

In programming, standards are formal documents that specify how to develop and implement code in a language. The script discusses various standards for the C language, such as ANSI C89, ISO C90, and C99, which have evolved over time to improve and expand the language's capabilities.

💡General-purpose language

A general-purpose language is a programming language designed to be used in various types of applications. The script refers to C as a general-purpose language, indicating its wide applicability and the broad range of tasks it can perform efficiently.

💡Compilation

Compilation is the process of translating code written in a high-level programming language into machine code that a computer can execute. The script mentions that C is a compiled language, which contributes to its performance efficiency and the need for a compiler to translate C code into executable programs.

💡Cross-platform development

Cross-platform development refers to the ability to develop software that can run on multiple operating systems or platforms. The script touches on this concept by discussing how C code can be written once and run on various platforms, demonstrating the language's versatility.

💡Paradigm

In programming, a paradigm refers to a style or way of programming. The script mentions that C supports multiple paradigms such as procedural, imperative, and object-oriented programming, showing its flexibility in different programming approaches.

💡Syntax

Syntax refers to the set of rules governing the structure of a programming language. The script uses the term 'C syntax' to describe the structural rules that must be followed when writing code in the C language, which is essential for understanding how to write valid C programs.

💡Legacy

Legacy in the context of programming refers to systems, applications, or languages that are still in use despite being older or having newer alternatives. The script discusses the legacy of the C language, emphasizing its continued relevance and use in modern software development despite the existence of newer programming languages.

Highlights

Introduction to the history of the C programming language and its significance in the real world.

The C language evolved from the B language, with additional features added by Dennis Ritchie.

Dennis Ritchie is considered the father of the C programming language, having developed it in the 1970s.

C language's role in the development of Unix, alongside Ken Thompson, who is known as the father of Unix.

The versatility of the C language, being used in various software and systems that still exist today.

C's characteristics as a general-purpose language, suitable for a wide range of programming tasks.

The concept of C as a middle-level language, offering a balance between high-level and low-level programming.

C's efficiency and speed, allowing for high performance and close interaction with hardware.

C's portability, enabling code to run on different operating systems and architectures.

C's compilation process and its status as a compiled language, offering performance benefits.

The multi-paradigm nature of C, supporting various programming styles and techniques.

The influence of C on the development of other programming languages, such as C++, Objective-C, and Java.

The role of C in the creation of protocols and network security, including its use in database systems.

The historical development of C standards, starting with ANSI and ISO standards.

The evolution of C standards from C89 to C99, C11, and the upcoming C2X, reflecting ongoing improvements and additions.

The importance of understanding C standards for writing portable and efficient code.

The continued relevance and critical role of C in modern software and system development.

The transcript concludes with an invitation for questions and further discussion on the topic of C programming.

Transcripts

play00:00

جلسه اول از دوره آموزش زبان بررسی سی رو

play00:03

با همدیگه شروع می‌کنیم و تو این جلسه

play00:06

می‌خوایم در رابطه با تاریخچه زبان مسی سی

play00:09

ی در دنیای واقعی یعنی در واقع چه

play00:12

سرویس‌هایی چه

play00:14

نرم‌افزارهایی وجود دارن هنوز در دنیای

play00:17

واقعی که از زبان برنامه‌نویسی سی استفاده

play00:19

کردن و در نهایت بیایم استانداردهای زبان

play00:23

برنامه‌نویسی ۰ رو با همدیگه بررسی کنیم و

play00:26

قبلش متوجه میشیم که اصلاً استاندارد چی

play00:29

هست هستش و بعد میره اون استانداردها رو

play00:32

معرفی می‌کنه زبان برنا نویسی ۳۰ بچه‌ها

play00:35

یک تاریخچه‌ای داره که یک مقدار حالا

play00:38

خلاصه می‌خوایم در رابطه با این تاریخچه

play00:40

بیایم و صحبت کنیم اول از همه زبان

play00:43

برنامه‌نویسی سی از زبان برنامه‌نویسی بی

play00:47

در واقع بهره گرفته اون کم وکسی هاش اون

play00:51

در واقع اون کارایی هاش بهش اضاف شده حالا

play00:54

چیزایی که نداشته زبان بی و بعد به زبان

play00:57

سی اضاف شده زبان بی توسط کین تامسون

play01:01

ایجاد شده در دهه

play01:05

۱۹۷۰ و بعد دنیس ریچی به عنوان هم

play01:09

دانشگاهی ش در واقع اومده اون کمو کاسیا

play01:13

رو جبران کرده و از زبان بی یک زبان جدیدی

play01:17

ساخته به اسم زبان سی پس دنیس ریچی در

play01:22

واقع سازنده یا کریتور در واقع اون زبان

play01:25

برنامه‌نویسی سی هستش پس اینجا کین تامسون

play01:29

و و دنیس ریچی در واقع خالقان یونیکس و در

play01:34

واقع زبان بی و زبان سی هستن که اگر

play01:38

بخوایم یک تاریخچه‌ای بررسی کنیم اینجا

play01:40

دنیس ریچی رو ما میگیم پدر زبان

play01:43

برنامه‌نویسی سی هستش و به عنوان یک

play01:46

پروگرمر یونیکس یک برنامهنویس یونیکس در

play01:49

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

play01:52

واقع توسعه می‌دادن که متأسفانه حالا دنیس

play01:56

ریچی رو ما نداریم تاریخ تولدش سپتمبر ۹۴۱

play02:00

بوده و وفاتش در واقع اکتوبر ۲۰۱۱ بوده

play02:04

اما از اون طرف کین تامسون هنوز زنده هستش

play02:08

و ما بهش میگیم که پدر سیستم عامل یونیکس

play02:11

و کریتور یا سازنده زبان برنامه‌نویسی بی

play02:15

هستش که در فوریه

play02:18

۱۹۴۳ به دنیا اومده پس این یک خلاصه در

play02:22

رابطه با سازندگان یا در رابطه با تیم یا

play02:25

در رابطه با اتفاقاتی بود که چجوری زبان

play02:28

برنامه نویسی ۰ به وجود اومد حالا توی

play02:32

اسلایدهای بعدی می‌خوایم در رابطه با اون

play02:35

کارایی زبان برنسی سی اینکه سی هنوز وجود

play02:39

داره یا نداره و چه استفاده‌هایی می‌تونیم

play02:42

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

play02:46

اولین مسئله‌ای که در موردش باید صحبت

play02:48

کنیم

play02:49

قابلیت‌های اون زبان برانس سی هستش ببینید

play02:53

ما به صورت کلی قابلیت‌ها رو میایم

play02:56

دسته‌بندی می‌کنیم بچه‌ها دسته‌بندی اول

play02:58

که برمی‌گرده به قابلیت‌هایی که توی خود

play03:01

زبان

play03:02

برنامه‌نویسی می‌تونیم پیاده‌سازی کنیم که

play03:05

مربوط میشه به کدنویسی اما یک دسته بندی

play03:08

دیگه داریم که ماهیت یا کلیات زبان

play03:11

برنامه‌نویسی سی رو به ما میگه و ما الان

play03:14

میخوایم در رابطه با همون صحبت کنیم کاری

play03:16

به اون وارد شدن به محیط کدنویسی و و اون

play03:19

حالا تکنیک‌ها یا اون فیچر هایی که توی سی

play03:23

می‌تونیم استفاده کنیم در زبان کدنویسی با

play03:25

اون کاری نداریم اولین مسئله که میگیم یک

play03:28

جنرال پروپ لنگوئج هستش این یعنی چی یعنی

play03:32

که شما اگر که نگاه کنید به نرم‌افزارهایی

play03:36

که الان همچنان هستن یا به سیستم عامل‌های

play03:40

که همچنان هستند یا حالا سرویس‌هایی که

play03:43

بعداً ممکنه به وجود بیاد یا همچنان هستند

play03:46

همه این‌ها یا یک بخشی از زبان برسی ۰

play03:51

استفاده کردن یا اینکه به صورت کامل در

play03:54

زبان برنامه‌نویسی سی نوشته شدن پس مفهوم

play03:58

جنرال پروس لنگوئج

play04:00

در مورد سی این تعریف بودش تعریف دوم یا

play04:04

مبحث دوم میگه که زبان سی یک میده لول

play04:08

لنگویج هستش ما اگر بیایم زبان‌های

play04:12

برنامه‌نویسی را از لحاظ دسترسی و کنترل

play04:16

سخت افزار بررسی کنیم اونوقت میگیم زبان

play04:19

برنامه نویسی سی یک میدل لول لنگویج هستش

play04:23

یعنی قبلش لو لول لنگویج بوده و قبلترش

play04:27

ماشین کد بوده که حالا حالا زبان برنس سی

play04:31

رو که ما بهش میگیم مید لول لنگویج بعد از

play04:34

در واقع لو لول لنگویج قرار گرفته و خب یک

play04:38

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

play04:41

بچه‌ها توی این بخش ما توی بخش سه زمانی

play04:44

که دارین در رابطه با کانسپت برنامه‌نویسی

play04:47

صحبت می‌کنیم اونجا بازشون می‌کنه که

play04:49

دقیقاً متوجه بشید که این‌ها چی هستن به

play04:53

عنوان مثال میده لول لنگویج یکی از اون

play04:55

بحثهایی که در موردش داره بحث بعدی که در

play04:59

زبان برا نویسی سی ست می‌کنه سرعتش هست

play05:03

یعنی فصل بودنش هست افیش نسی بودنش هست

play05:06

یعنی بهرهوری کامل رو ما می‌تونیم داشته

play05:08

باشیم و پورت ابیلیتی هست که قابلیت قابل

play05:12

هم بودن داره فصل بودنش در واقع برمی‌گرده

play05:16

به اینکه به لایه سخت افزار نزدیک‌تر هستش

play05:20

این یک مبحث و مبحث بعدی اینکه یک زبان

play05:25

برنامه‌نویسی کامپایلری هست و به این دو

play05:28

دلیل در واقع ما میگیم که زبان

play05:30

برنامه‌نویسی سی در واقع فصل هستش سرعت

play05:35

بیشتری داره حالا در رابطه با هر کدوم

play05:38

این‌ها گفتم توی بخش ه که مربوط به کانسپت

play05:42

برنامه‌نویسی میشه در موردش صحبت می‌کنیم

play05:45

مبحث بعدیش افیش نسی بودنش می یعنی قابلیت

play05:48

بهرهوری داشتنش هست که داره اشاره می‌کنه

play05:52

به اینکه می‌تونه در سطح لو لول به حافظه

play05:57

یا به سخت افزار دسترسی داشته باشه و

play06:00

اون‌ها رو کنترل کنه پورت بلیتی یا قابل

play06:03

هم بودنش برمی‌گرده به این مسئله که شما

play06:07

یک بار کد تون رو به طور مثال در ویندوز

play06:10

۹۸ یا در ویندوز ام ای یا اصلاً در ویندوز

play06:14

اکس پی خودتون رو نوشتید و این کد توی

play06:17

ویندوز ۸ ویندوز ۱۰ و ویندوز ۱۱ در واقع

play06:21

میاد کار می‌کنه برخلاف زبان برنامه‌نویسی

play06:25

اسمبلی که در واقع به معماری حساس بود

play06:29

یعنی پرتب نیستش و برای هر معماری مربوط

play06:33

به سی پی شما باید کدنویسی انجام بدین سی

play06:36

اینجوری نیسته شما یک بار در واقع میا اون

play06:39

کد رو اجرا می‌کنید و توی محیطهای ۳۲ بیتی

play06:42

و ۶۴ بیتی و هر آرشیتکت که حالا در واقع

play06:45

روی بحث سیستم معامله‌های ویندوز یا

play06:48

نمی‌دونم لینوکس یا حالا هر چیزی که در

play06:51

رابطه با اون معنا میده میاد و اجرا میشه

play06:56

پس برخلاف زبان برنامه نویسی اسمبلی که

play06:58

باید برای هر معماری یک کدنویسی انجام بشه

play07:02

زبان برنامه نویسی سی به این شکل نیستش پس

play07:06

یک تعریف دیگه‌ای که در رابطه با زبان سی

play07:09

وجود داره این میگن که نسخه قابل حمل زبان

play07:14

برنامه نویسی اسمبلی هستش این یک تعریفی

play07:18

که می‌تونه توی پورت بیلیت در واقع جای

play07:21

بگیره مبحث بعدی کراس پلتفرم دولپ مننت

play07:24

هست یعنی شما یک جوری میتونید بیاد

play07:27

کدنویسی رو انجام بدید با یک سری

play07:29

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

play07:33

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

play07:36

استانداردها رو میایم در موردش صحبت

play07:38

می‌کنیم اینکه از چه لایبرری هایی استفاده

play07:41

کرده باشه یعنی از چه کتابخانه‌هایی در

play07:43

واقع استفاده کرده باشه به چه شکل در واقع

play07:46

مراحل کامپایل یا کانفیگ جنریتور انجام

play07:50

بشه که بتونی شما با یک کد بیس ی که یک

play07:54

بار در ار کد نویسی می‌کنید بتونید توی

play07:57

پلتفرم‌های مختلف بیاین و اون کد رو اجرا

play08:01

کنین و مبحث بعدی مولتی پارادایم بودن

play08:04

زبان برنا نویسی سیست ما یک سری تعاریف

play08:07

داریم توی بحث زبان‌های برنامه نویسی که

play08:11

برمی‌گردیم به اون پارادایم‌ها اینکه در

play08:14

واقع چه کارهایی میتونه اون زبان برنا

play08:17

نویسی انجام بده که باز این مبحث رو ما

play08:20

توی بخش هه داریم چه چیزایی هست مثلاً

play08:23

پروسیال پروگرامینگ رو داریم ایمرتی رو

play08:27

داریم فانکشنال رو داریم آبجکت آ تد رو

play08:30

داریم و ایون دریون رو داریم که در واقع

play08:33

این‌ها یک سری متدها یک سری کلاس‌ها یک

play08:36

سری روش‌های برنامه نویسی هستن و مشخص

play08:40

میکنه که آیا زبان برنامه نویسی خاصی حالا

play08:43

ما اینجا در رابطه با سی داریم صحبت

play08:45

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

play08:48

می‌کنن می‌تونن در واقع به این شکل باشن

play08:51

یا نه که توی بخش سه توی کانسپت

play08:54

برنامه‌نویسی در موردشون صحبت می‌کنه

play08:58

بسیار خب ما تا الان زبان‌های

play09:01

برنامه‌نویسی زیادی داشتیم بچه‌ها که سطح

play09:05

بالاترم هستن یعنی از زبان برمه نویسی ۳۰

play09:08

سطح بالاتر راحت کدنویسی کنید پیچیدگی‌های

play09:13

زبان‌های میدل لول و لو لول رو ندارن و در

play09:17

واقع برنامه‌نویسی خیلی راحت‌تر می‌تونه

play09:20

انجام بشه اما همچنان از زبان

play09:23

برنامه‌نویسی ی داره استفاده میشه به

play09:26

دلایلی که ما در موردش صحبت کردیم

play09:30

و به این دلایل در واقع می‌تونه یک برتری

play09:33

حتی نسبت به زبان‌های برنامه‌نویسی دیگه

play09:36

هم داشته باشه اگر می‌خواید بدونید اینم

play09:39

باید بگم که خیلی از زبان‌های

play09:41

برنامه‌نویسی دیگه‌ای که ما الان داریم بر

play09:45

پایه یا بر اساس مشتق گرفته شده از زبان

play09:49

برنامه‌نویسی ۳۰ هستند که حالا جلوتر

play09:52

میایم به اون‌ها می‌رسیم تعریفشون می‌کنین

play09:55

که ببینیم چی هستن بسیار خب سیستم عامل‌ها

play09:58

ام بد سیستم‌ها یا همون سیستم آن‌های

play10:01

نهفته دستگاه‌های موبایل زبان‌های

play10:04

برنامه‌نویسی کامپایلرها و اینترپل تر

play10:07

هایی که وجود دارن برای زبان‌های

play10:10

برنامه‌نویسی دیتابیس ها بحث در واقع

play10:13

پروتکل‌های شبکه و یا بحث‌های امنیت شبکه

play10:18

این‌ها در واقع اون اریا ها یا اون

play10:21

محیط‌هایی هستن یا اون مجموعه‌هایی هستند

play10:23

که همچنان زبان برنامه‌نویسی ۰ داره

play10:26

داخلشون استفاده میشه به به عنوان مثال

play10:30

سیستم عامل یونیکس که در سال

play10:33

۱۹۶۹ در واقع استارتش خورد برنامه نویسی

play10:36

شد اومد و در سال‌های بعدش کدها ش دوباره

play10:41

کدنویسی شد با زبان برنامه نویسی ۳۰ یعنی

play10:44

از اسمبلی در واقع اومدن سمت زبان

play10:49

برنامه‌نویسی سی یا کرنل ویندوز رو اگر

play10:52

بخوایم حساب کنیم در واقع بیشتر قسمتهاش

play10:56

با زبان برنا نویسی ۳۰ هستش و یه سری از

play10:59

قسمت هاشم در واقع با اسمبلی هستش حالا

play11:02

قبل از اینکه ادامه بدم بحثو یه چیزی رو

play11:04

در نظر بگیرید الان ما فقط میخوایم اشاره

play11:08

کنیم به اینکه نیچر شون اورجین شون در

play11:12

واقع زبان برنامه‌نویسی ۰ بوده یعنی چی

play11:15

یعنی الان درسته که ویندوز ما میگیم وین

play11:18

کنل ویندوز در واقع با زبان برنامه نویسی

play11:21

۳۰ بوده ولی در گذشته سی بوده و اسمبلی

play11:26

الان که سی پلاس پلاس اومده خب در واقع سی

play11:28

پلاس پلاس هم واردش شده الان که راست

play11:31

اومده پس زبان برنامه‌نویسی راست هم واردش

play11:35

شده ما داریم در رابطه با اورجین نشو

play11:37

داریم در رابطه با نیچر در واقع صحبت

play11:41

می‌کنیم که نسخه‌های اولیه به این شکل

play11:43

بوده بسیار خب برگردیم به مبحث مون لینوکس

play11:46

هم بچه‌ها به همین شکل بوده که در واقع با

play11:49

زبان برنسی سی بوده و قسمت‌هایش اسمبلی

play11:52

الان می‌دونین که در واقع راست هم وارد

play11:54

این مبحث شده یا سیستم عامل مک اوس هم به

play11:58

همین شکل که ی یک قسمت‌هایش یک جزئی یا

play12:02

کامپوننت هاییش در واقع در زبان

play12:04

برنامه‌نویسی ۰ نوشته شده حالا اون سیستم

play12:08

عامل‌های مربوط به آیو اندروید و ویندوز

play12:11

فون کرنل شون با در واقع زبان

play12:15

برنامه‌نویسی سی بوده و در ادامه یک سری

play12:18

از زبان‌های برنامه‌نویسی که مشتق شدن از

play12:22

زبان برنامه‌نویسی سی مثل سی پلاس پلاس

play12:25

آبجکتیو سی سی شارپ جاوا جاوا اسکریپت پر

play12:29

و پی اچ پی در واقع وقتی میگیم که مشتر

play12:33

شدن منظورمون این نیست که حتماً بر پایه

play12:36

زبان ب نویسی ۰ بوده و مسئله بعدی که در

play12:40

رابطه با دیتابیس ها هست به طور مثال

play12:42

دیتابیس راکل از زبان برنا نویسی اسمبلی

play12:46

به زبان برنا نویسی ۳۰ مجدد برنامه نویسی

play12:50

شد یعنی ابتداً با زبان برنا نویسی اسمبلی

play12:53

بوده و بعد توی سال‌های بعدی که زبان ۰ به

play12:56

وجود میاد میان اون رو کد هاشو با زبان

play12:59

انسی سی می‌نویسد ما اس کی ام اس اس کی که

play13:03

مربو به مایکروسافت هستش این‌ها هم باز با

play13:06

در واقع زبان برنامه نویسی سی نوشته شدن

play13:10

روتین پروتوکل هایی مثل او پیف بیجی پی و

play13:13

آرآی پی یا همون ریپ در واقع اینا روتن

play13:16

پروتوکل هایی هستن که با استفاده از زبان

play13:20

برسی سی اومدن و پیاده سازی شون کردن یا

play13:25

اینجا دی ان اس سرور بایند یا آپاچی اچ

play13:28

تیتی پی س سرور که یک در واقع وب سرور

play13:31

هستش یا انجینیک که در واقع یک وب سرور

play13:35

هستش اینها هم با زبان بر نویسی ۰ بوده یا

play13:39

پیاده سازی پروتوکل اس اس ا یک پروتوکل

play13:42

ارتباطی هستش با زبان بنویسی سی بوده اپن

play13:46

اس اس ال که به عنوان یک کتابخانه مربوط

play13:49

به کریپتو گرافی و امنیت هستش در واقع با

play13:53

زبان برنامه نویسی سی بوده وایر شارپ و تی

play13:56

سی پی دامپ هم که در واقع نرم‌افزارهای ما

play13:59

تورینگ هستند این‌ها هم با زبان

play14:01

برنامه‌نویسی ۰ بودن پس نتیجه می‌گیریم که

play14:05

ما درسته که زبان برنوس سی قدیمی هستش

play14:09

درسته که در واقع زبان‌های جدیدتری وجود

play14:13

داره اما همچنان کارایی زبان برنامه‌نویسی

play14:17

ی توی همه نرم‌افزارها توی همه سیستم

play14:20

آن‌ها رو ما می‌بینیم پس به این مفهوم

play14:24

می‌رسیم که زبان برنسی سی همچنان زنده

play14:28

هستش و برای خیلی از جابها برای خیلی از

play14:32

گرایش‌ها یا شغل‌ها در واقع کریتیکال هستش

play14:36

یعنی باید زبان براندازی سی رو بدونن و

play14:40

مسئله بعدی در رابطه با

play14:43

استاندارد‌های زبان برنامه‌نویسی ۰ هستش

play14:46

ما زمانی که میگیم استاندارد در واقع

play14:49

داریم به این اشاره می‌کنیم که بر چه

play14:51

اساسی بر چه قوانینی می‌تونیم کد هامون رو

play14:55

بنویسیم و اجراشون کنیم بسیار خب اول از

play14:59

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

play15:02

چی هستش وقتی میگیم استاندارد حالا در

play15:04

رابطه با یک زبان برنامه‌نویسی داریم به

play15:07

این اشاره می‌کنیم که یک سری داکیومنت

play15:10

برای ما وجود دارن یک سری قوانین نوشته

play15:12

شده و به ما میگن که بر چه اساسی می‌تونین

play15:16

برنامه‌نویسی کنین و در واقع کد هاتونو

play15:20

اجرا کنین حالا د تا ارگانیزر ما اینجا

play15:23

داریم که در واقع مربوط میشن به این فراهم

play15:27

کردن رول‌ها یا این این استانداردها یا

play15:30

این قوانین یکی از اونها امریک نشنال

play15:33

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

play15:37

اون یکی اینترنشنال ارزشن فور استانداردی

play15:42

شن هستش که ما ایزو میگیم یا حالا بعضی از

play15:46

تلفظ ها آیسو

play15:49

میگن پس این مربوط به استانداردها میشد

play15:53

اولین استانداردی که به وجود اومد س ۸۹ سی

play15:57

۹۰ بود اینجا هم توی اسلاید در واقع

play16:00

میبینینش که اولین نسخه استاندارد در

play16:03

رابطه با اون ورژن مرتبط با ۳۰ بودش که

play16:08

توسط انسی در سال ۱۹۸۹ و توسط ایزو در سال

play16:15

۱۹۹۰ در واقع اومدن ابروش کردن یعنی

play16:19

تأییدش کردن که در واقع اینو ما می‌پذیریم

play16:24

که این استاندارد مربوط به زبان سی قابل

play16:28

قبول هستش و ما می‌تونیم ازش استفاده کنیم

play16:30

و معرفیش کنیم که به عنوان ان سی سی یا

play16:34

ایزو س ۹۰ هم شما میبینینش توی داکیومنت

play16:38

ها و اگر که اینجوری بخوایم تعریفش کنیم

play16:41

میگیم ان سی سی ۸۹ که به این کد استاندارد

play16:45

هم معروف هستش یا ایزو آی ای سی ۹۸ ۹۹

play16:51

۱۹۹۰ حالا من دیگه در ادامه این‌ها رو

play16:54

نمیخونم ولی در جریان باشید که اگر انسی و

play16:58

اگر ایزو باشن در واقع استانداردها یک کدی

play17:02

دارن که اشاره می‌کنن به اون استانداردها

play17:04

حالا بعد جلوتر بهتون میگم که اصلاً این

play17:06

استانداردها چیه قراره که چه چیزهایی

play17:09

معرفی بشه استاندارد بعدی سی ۹۵ بودش که

play17:14

توسط ایزو در سال

play17:17

۱۹۹۵ در واقع تأیید شد برای اینکه اون

play17:21

عیب‌های ۹۰ رو استاندارد ی۹۰ رو در واقع

play17:26

برطرف کرده بود و اینکه یک سری قاب یت هم

play17:29

بهش اضاف شده بود اینجا توی استاندارد سی

play17:32

۹۵ دیگه ان سی کاری نداشته که برای تأییدش

play17:36

در واقع بخواد اقدام کنه و با این کد

play17:40

استاندارد در واقع معروف هستش یعنی این رو

play17:44

شما در واقع می‌تونید بیاد و جستجویش

play17:48

کنید استاندارد بعدی سی ۹۹ بودش که توسط

play17:52

ایزو و توسط انسی در واقع در سال

play17:56

۱۹۹۹ اپرو شدن یعنی تأیید شدن و یک سری

play18:00

قابلیت‌های جدیدی در واقع بهش اضافه شده

play18:03

بود بچه‌ها استانداردها وقتی معرفی میشن

play18:06

در واقع یا یک سری از قابلیت‌های قبلی رو

play18:10

که قابلیت استفاده ندارن رو دوپلیکیت

play18:12

می‌کنن حذف می‌کنن یا اینکه مودیفای

play18:15

می‌کنن ایم پروش می‌کنن که بهتر باشه یا

play18:18

اینکه یک سری فیچر ها رو در واقع میان بهش

play18:20

اضاف می‌کنن و کد استانداردش هم شما اینجا

play18:24

می‌بینید هم ایزو و هم آ سی رو استاندارد

play18:28

بعد دی سی ۱۱۱۱ بودش که در سال ۲۰۱۱ توسط

play18:31

ایزو و انسی در واقع اپرو شدش تأیید شدش و

play18:35

این کد هاش رو هم می‌بینید که استاندارد

play18:39

مربوط به ایزو هستش و این استاندارد مربوط

play18:41

به انسی هستش که حالا می‌نویسه که در واقع

play18:45

به چه شکلی

play18:48

هستند استاندارد بعدی سی ۱۸ هستش که ما

play18:52

سی۱ هم می‌بینیم که توی داکیومنت ها یا

play18:55

توی کتاب‌ها در واقع اسم برده شده اما

play18:59

سیده در واقع یک این فورمال نیم هستش که

play19:02

در سال ۲۰۱۸ توسط ایزا پابلیش شد یعنی

play19:07

اپرو شد و بعد پابلیش شد و به این

play19:09

استاندارد در واقع معروف هستش که حالا بعد

play19:13

می‌تونید اگر دوست داشتید استانداردها رو

play19:16

داشته باشید و نگاهشون کنید می‌تونید توی

play19:18

گروه درخواست بدید که من این استانداردها

play19:21

رو هم برای شما ارسال کنم که اصلاً ببینید

play19:24

که استانداردها چی بودن و چی قراره که

play19:28

باشه

play19:29

استاندارد بعدی که هنوز در واقع به صورت

play19:32

درفت ورژن هستش یا آپ کامینگ ورژن هستش

play19:36

هنوز ثبت نشده سی تو ایکس هستش حالا اسمی

play19:40

که اومدن بهش دادن دیگه سی تو حالا بر

play19:43

اساس اون سال ۲ خورده‌ی در واقع حالا

play19:45

ممکنه ۲۰ ۲۳ باشه ۲۰ ۲۴ باشه و بعد در

play19:49

واقع حالا اون استاندارد یک سری درفت در

play19:53

واقع یک سری پیشنویس در واقع اومده و

play19:56

آماده شده براش ولی هن نوز تأیید نشده

play20:01

بسیار خب حالا زمانی که شما میخواید در

play20:04

مورد این استانداردها سرچ کنید یا اصلاً

play20:06

در رابطه با قابلیت‌های بچه‌ها زبان

play20:08

برنامه نویسی سرچ کنید زبان برنامه نویسی

play20:10

سی یک سری هینت اینجا باید بهتون بدم یک

play20:14

سری حالا مفاهیم اینجا هست که حالا سی

play20:18

لایک سینتکس میگرد یا سی کد بیس میگرد

play20:20

یعنی چی یعنی اینکه زبانی که در واقع مثل

play20:24

زبان سی سینتکس داشته یعنی سینتکس زبان

play20:28

برا نویسه ۳۰ باشه یا وقتی میگیم سی کد

play20:30

بیس یعنی در واقع کل کدم یا اون ساختار

play20:33

بیس اولی همون ۰ هستش یا وقتی میگیم سی

play20:36

ایم پلنتیشن یعنی که با زبان برنسی سی

play20:40

داره آماده سازی میشه یا با زبان برنسی سی

play20:43

نوشته شده یا مجدد بازنویسی شده در زبان

play20:47

سی یا اینکه در واقع زبان سی با یک زبان

play20:51

دیگه‌ای هستش به عنوان مثال شما مثلاً

play20:54

نرم‌افزارهایی رو می‌بینید یا اصلاً بهتر

play20:57

همون کرنل ویندوز رو الان مثال بزنیم که

play20:59

سی داره سی پلاس پلاس داره اسمبلی داره و

play21:03

توی نسخه‌های جدید راست هم داره اما سی به

play21:06

عنوان یکی از اون زبان‌های برنامه‌نویسی

play21:09

به همراه زبان‌های برنامه نویسی دیگه در

play21:13

واقع میادش یا اینکه در واقع مشتق شده از

play21:15

زبان برنوس سی یا تحت تأثیر در واقع زبان

play21:19

برنوس سی هستش این‌ها کلیدهایی هستن که

play21:22

حالا می‌تونید توی سرچ ها استفاده کنید یا

play21:25

اگر توی مفاهیمی یا توی مثلاً اسناد بود

play21:29

یا توی مثلاً نمیدونم کتابی بود اینها رو

play21:32

در واقع دیگه گوشتون آشنا باشه با مفهومش

play21:35

که بدونید در واقع داره به چی اشاره میکنه

play21:38

حالا اگر یک مثالی رو بیایم اینجا باز

play21:41

کنیم در رابطه با این استاندارد بچه‌ها

play21:44

توی استاندارد ان سی سی یا همون سی ۸۹ ۹۰

play21:49

ما بولین نداشتیم دیتا تایپ بولین نداشتیم

play21:53

تا زمانی که در واقع استاندارد ۹۹ میاد و

play21:57

اون اس دیول رو در واقع میاد معرفی می‌کنه

play22:01

اون هدر رو معرفی می‌کنه که حالا ما

play22:04

بتونیم به صورت نتی بیایم از دیتا تایپ

play22:08

بولین استفاده کنیم حالا قبل از اون یعنی

play22:12

قبل از در واقع استاندارد سی ۹۹ ما با

play22:16

استفاده از دایرکتی ها یعنی اینجا شما

play22:19

دارید می‌بینید با استفاده از دایرک تیو

play22:21

ها می‌تونستیم بیایم در واقع اون بولین ها

play22:24

رو شبیهسازی کنیم پس استاندارد که ما

play22:28

داریم در موردش صحبت می‌کنیم به عنوان

play22:31

مثال این یک نمونه بود که یک قابلیت جدید

play22:34

در واقع به زبان برنامه‌نویسی ۳۰ با

play22:37

استاندارد ۳۰۹۹ اضاف شد حالا بعداً توی

play22:41

برنامه نویسی بهتون میگم که این

play22:42

استانداردها رو ما کجا می‌دونیم مشخص کنیم

play22:45

کجا می‌تونیم ازشون استفاده کنیم و در

play22:48

واقع طبق همون استاندارد بیایم و کدنویسی

play22:51

خودمون رو انجام

play22:54

بدیم بسیار خب این بخش یک ما که در رابطه

play22:58

با تاریخچه در رابطه با زبان برنامه‌نویسی

play23:01

۰ در ریل ورد و اون استانداردهای زبان

play23:05

برنامه‌نویسی ۳۰ بوش در واقع اینجا به

play23:08

پایان می‌رسه حالا اگر سؤالی بود اگر

play23:11

مشکلی داشتید توی گروه بپرسید تا به

play23:14

سؤالاتتون جواب بد

Rate This

5.0 / 5 (0 votes)

Related Tags
C ProgrammingHistory of CSoftware DevelopmentDennis RitchieKen ThompsonUnix OriginsStandardsPortabilityPerformanceProgramming Paradigms