תכנות אתרים (באנגלית: Web programming) אני מגדיר כיצירה ושינוי אתרי ווב כולל ברמת קוד מקור.
תכנות אתרים נעשה כפיתוח תוכנה עם סטאק הווב. פעולות בסיסיות בתכנות אתרים הן פיתוח תפריט ניווט ופיתוח טופס יצירת קשר ופעולות המצריכות מומחיות הן פיתוח API ופיתוח מנגנוני אבטחת מידע (כגון מנגנון מניעת Brute force attack).
תכנות אתרים מצריך ידע בשפת התנהגות קדמית (ככלל תהיה זו שפת JavaScript) ושפת התנהגות אחורית כל שהיא, כמו PHP.
בעזרת תכנות אתרים ניתן לשנות אתר דרך קידוד קבצים המהווים אותו (כולל קבצי מערכת ניהול תוכן עימה בונים אותו) ואם נעשה נכון הוא הדרך הגמישה ביותר לשנות התנהגות אתר.
בעיקר מאז שנות ה-2000 החלו להימצא מערכות ניהול תוכן שהן תוכנות המצמצמות במידת מה את מלאכת התכנות (כקידוד פרופר) אם כי מערכות ניהול תוכן רק מבצעות אוטומציות נקודתיות במטלות טריוויאליות כמו יצירת דפים ואינן מיועדות להחליף כל פעולה המצריכה תכנות (כמו פיתוח API להעברת מידע מבסיס נתונים של אתר אחד לבסיס נתונים של אתר אחר).
סטאק הווב
סטאק הווב אני מגדיר ככל קבוצת שפות מחשב המשמשות חלקן או כולן יחדיו לפיתוח ותחזוקת אפליקציות ווב ("אתרי ווב") ובמקרים יוצאים מן הכלל אף רק שפת מחשב אחת מהן (כגון אפליקציה הכוללת HTML בלבד, תופעה נדירה).
הגדרה צרה
הגדרה צרה ומסורתית של סטאק הווב הינה שפת HTML, שפת JavaScript ושפת CSS.
הגדרה רחבה
אני אישית מגדיר את סטאק הווב, פרקטית, לפי מה שמצופה מרוב מתכנתי הווב בתעשיית ההי-טק כיום (כך לפחות לפי הבנתי) בהגדרה רחבה זו:
- שפת Bash
- שפת HTML
- שפת JavaScript
- שפת CSS
- שפת התנהגות אחורית כל שהיא כגון שפת PHP
כמו כן, בהתמחויות ספציפיות נכללת בכך עבודה עם תוכנות שונות כגון:
- PHPMyAdmin
- Task runner
- imagemagick
- כלי תימנות שונים
- מערכות ניהול תוכן שונות
- ועוד
ללמוד איתי תכנות אתרים
אני מקדם אתרים ומורה פרטי לתכנות אתרים המעביר שיעורים פרטיים בתכנות אתרים המיועדים בעיקר למתחילים שטרם התנסו בנושא ← אני מתחיל מלימוד הפעלת מניפולציות על התנהגות אתריי ווב קיימים עם שפת JavaScript "ונילית" (כלומר יסודית וכללית ללא הרחבות כמו jQuery) ומתקדם לנושאים מורכבים יותר בהתאם לצורכי התלמיד. אפשר שנושאים אלה יהיו למשל:
- קידוד תפריט ניווט עם שפת HTML, שפת JavaScript ושפת CSS
- קידוד טופס יצירת קשר בסיסי בעברית עם HTML-JavaScript-CSS-PHP
- סוגיות בסיסיות באבטחת מידע
- סקריפטיי אוטומציה שונים הרצים על סביבת שרתים עליה מאחסנים אתר ווב (במקרה הצורך) עם שפת Bash
ניתן להתאים את הלימוד לכל עניין פיתוחי ספציפי; לאחר שאברר עם התלמיד מה הוא שואף לפתח אוכל לשקול איך לעשות זאת הכי טוב.
אם יש שאלות נקודתיות אנסה לענות עליהן כמיטב יכולתי.
למי שטרם התנסה גם בבניית אתרים אני ממליץ להקדים לימודי תכנות אתרים בעבודה עם כלי פיתוח העושים מבוא כללי ונוח לעולם זה כגון מערכת ניהול תוכן (תוכנה לבניית אתר); אפשר להתחיל בשיעור על בניית אתרים ולעבור בהדרגה לתכנות אתרים.
ללמוד תכנות אתרים מ-0 עם מורה פרטי מומחה בפיתוח אתרים, לתכנת אתר מ-0 עם מורה פרטי בהדרכה צמודה.
לגבי לימודי JavaScript
השפה העיקרית שאני מלמד היא JavaScript יסודית ונילית. זו השפה שעימה התחלתי ללמוד תכנות בעצמי והיא הכי קשורה למה שאני עושה שזה קידום אתרי ווב.
בלימוד ה JavaScript אני מתמקד בשפה "ונילית", כלומר, ללא תוספות מלאכותיות הנקראות "ספריות קוד".
בלימוד אני מתמקד ביסודות השפה ("האריתמטיקה של ה JavaScript") בנושאים כמו מה זה השוואה לעומת השמה, מה זה תכונה ומה זה שיטה, מהו משתנה ומה היא פרוצדורה, מה הוא פרמטר, מה הוא טיפוס מידע, מה הוא מערך ומה הוא אובייקט, מה הוא איוונט, מה זה להאזין לאיוונט ובעיקר למוטציית DOM, מה זה קונסולה ומה זה יוזר סקריפט, מה זה set Timeout ומה זה SetInterval וכדומה.
מבחינתי הרבה יותר חשוב לקיים עם תלמיד דיון על איך להריץ פונקציה ובאילו תנאים או מתי נידרש לטרגר איוונטים כמו DOMContentLoaded או load או "פסאודו-איוונטים" כמו setTimeout או setInterval ומה ניתן להריץ בקונסול ומה ביוזר סקריפט או בקובץ מאשר נושאים מורכבים יותר כמו Event propogation/delegation או מה זה AJAX ולמה לפעמים קוד יעבוד בקונסולה אבל לא ביוזר סקריפט או קובץ ואיך להתמודד עם זה. דיון על נושאי יסוד וחזרה עליהם חשוב בהרבה מנושאים מתקדמים מבחינתי.