מבוא לתכנות

כל אחד שרוצה ושואף להיות מתכנת. תוהה לא פעם מה זה לתכנת ואיך זה עובד, יכול שהגעת עם הרבה מושגים ודעות קדומות על תיכנות, אבל, זה לא תיכנות.

מה זה תיכנות?:
תיכנות נובע מהמילה תוכנה, וכן תיכנון, יצירה תהליך הבריאה של התוכנה.
שפות התיכנות בעולם מתחלקים בחילוק גס לשני חלקים.

שפת הידור ושפת סקריפט.

שפת הידור: הינה שפה שכתובה בטקסט-פשוט (plane-text). אך הטקסט לכשלעצמו אינו מספיק בשביל שהתוכנה תעבוד. זה סך הכל טקסט.
ובשלב זה מגיע תהליך ההידור (compile). [שאגב פירושו העיברי הינו מהודר-טוב יותר. שהטקסט נהפך לתוכנה]
בעצם התהליך עובד ככה.

כתיבת הקוד.
הידור: אשר מורכב מהשלבים הבאים

• קישור. חיבור כל הספריות וכל הנתונים.
• הידור. יצירת קובץ הרצה

הרצה: נוצר קובץ הרצה שאיתו ניתן להריץ את התוכנה.

ממילא כל פעם שברצוננו לשנות משהו בתוכנה יש להדר מחדש כי בקובץ ההרצה אין את הקוד החדש.

שפת סקריפט: המהדר הינו מהדר חי (LIVE). וההדיור נוצר בכל פעם שמריצים את הקובץ.

לדוגמא אנו יצרנו קובץ שבו כתוב התוכנה. ועל מנת להריץ את התוכנה. אנו פשוט נפתח אותה בעזרת המהדר. (כמו לפתוח תמונה בצייר). כלומר המהדר יודע לפענח את הטקסט ולהריצו מייד.

אין קובץ ריצה. כי המהדר הוא הרץ. וכל פעם הוא רץ אינדבודאלי לכל קובץ.

בכזו שפה. כל שינוי בטקסט יביא לשינוי התוכנה בפועל.

דוגמא לשפת סקריפט היא שפת Batch של דוס שמגיע עם ווינדוס.

הבסיס:
עולם התיכנות מחולק לשני חלקים. (כמובן ישנם עוד חלקים אך אנו נתמקד בשניהם בלבד)
תיכנות קונבנציונלי: כגון. C PHP גירסאות ישנות ועוד.
תיכנות מונחה עצמים: כגון JAVA. C#. ועוד.
שפות כלאיים: אשר מכילים את התכונות משני השפות. כגון. C++. PHP גירסאות חדשות. ועוד.

אנו נבחן כעת כל תוכנה באשר היא על פעולת הריצה שלה ברמת המיקרו-מעבד.

כל תוכנה חייבת מניע (interputer) שיניע אותה. ועל מנת שהמעבד יידע מאיפה להתחיל. לכן בכל שפת תיכנות. חייב להיות פונקציה\פעולת main אשר משם התוכנה תתחיל. המעבד מתחיל בפיענוח של ה-main. וממשיך משם הלאה לפי הוראות התוכנה.
לכן בעצם ניתן לראות את כל התוכנות באותה נקדות מבט. התוכנה נהפכת לקוד מכונה. ומשם המעבד מריץ אותה.
(JAVA ושפות דומות אינם רצים ישר על המעבד. אלא על המכונה הוירטואלית של השפה שלהם. והוא זה שרץ על המעבד)
כל שאר הקוד והתכונות השונות בין שפה לשפה, וטכנולוגיה לטכנולוגיה. הינו אך ורק בעבור נוחות העניין.

וכעת נסביר את כל יסודות התיכנות.
משתנים:
ככלל כל תוכנה חייבת מידע בשביל להתקדם אפילו רק שלב אחד. משחק חייב לחשבן איפה ימוקם השחקן במאית שניה הבאה. תוכנה חייבת לספק כללי שימוש למשתמש. וכן הלאה.

באם מידע זה היה מאוחסן ישר בדיסק הקשיח. יכולת העיבוד של התוכנה הייתה מוגבלת במהירות הדיסק קשיח. אשר הוא דבר שמזדקן מאוד מהר. ואינו מגיע לביצועים גבוהים כלל.
לשם כך נוצר רכיב הזיכרון האקראי (RAM) אשר גם התוכנה (שנמצאת על הדיסק קשיח) וגם המעבד ניגשים אליו במהירות גבוהה יותר.
לגבי אופן עבודת הRAM אין כאן המקום. אך כעיקרון זה רק מה שעל המתכנת לדעת.
ועל כן. כל תוכנה שנוצרת יכולה לתפוס מקום בראם. (על בסיס מקום פנוי).
על מנת לקבל את המקום הנ"ל בראם. יש להגדיר משתנה. ויש להגדירו בשם. ועל מנת לגשת אליו יש לקרוא לילד בשמו.
סדר הפעולות:
• בקשת מקום איחסון בראם.
• קבלת אישור מהראם.
• שטח איחסון נוצר בשם המבוקש לדוגמא A.
• וכעת בכל פעם שניגש לA ירוץ התהליך שוב ושוב. הראם יכתוב את המידע לשטח והרם יחזיר את השטח בעת הבקשה.

דא עקא יש מאפיין נוסף בתיכנות. שבו אנו מגדירים את המשתנה כמצביע לזיכרון בראם. ומה ההבדל בינו לבין משתנה בקטע הבא.

מצביעים:
מצביע הינו בדיוק כמו משתנה. אך עם הבדל אחד.
במשתנה ישנה בעיה, אין ניהול לגבי האיחסון בזיכרון, אין החלטה מתי זה קורה, אין דרך להורות לראם למחוק את השטח. מה שעלול לגרום למשתנה בתוכנה ענקית לדליפת זיכרון ותקיעת המחשב (אגב על בסיס זה היו בנויים פעם וירוסים. אך כיום מחשבים נורמאלים מוגנים מפני זה. אף ללא אנטי וירוס)
ולכן מה שמצביע נותן לנו זה את האפשרות. להחליט מתי לאתחל את המצביע (ורק אז יוקצה עבורו מקום) להחליט כמה מקום אנו זקוקים לו.
בשפות כמו JAVA ושפות עיליות אחרות. כל האובייקטים הנוצרים ממחלקות הינם מצביעים. כאשר המתכנת יכול רק לשלוט על תהליך היצירה והגודל שלו. אך לא על תהליך הניקוי והזריקה שלו.

פונקציות:

לולאות:

ביטויים:

OOP:

איגודים:

הורשה:

ממשקים:

פולימורפיזים:

 

Share Button