כולנו מכירים מהאקדמיה את השפות הפופולריות,
פייתון כי זו שפה גנרית פשוטה,
C כדי ללמוד מה הם פויינטרים,
ג’אווה סקריפט כי מישהו בעבר החליט שזה רעיון טוב (זה לא).
מה עם השפות הפחות מוכרות היום?
הנה כמה שפות שכדאי לכם להכיר על מנת לגוון את הארסנל שלכם, וללמוד פרדיגמות שאנחנו לא משתמשים בהם ביום יום:
שפת זיג בנויה על מנת להיות פשוטה ככל הניתן ללא פרשנויות שונות לקוד על סמך הקומפיילר או על פלטפורמת ההרצה.
אם זה לא כתוב - אז זה לא קורה.
ניתן להתנסות בשפה כאן:
https://zig-play.dev/
1 | const std = @import("std"); |
קוד זיג נראה מסובך אך הוא די פשוט.
החסרון הוא הצורך לקבל את ה-writer
של הStandard output
.
אולם - עבור זיג זהו כוחה כי אין פה שום דבר שנסתר מהעין.
קיימים 4 דגלים לבניית הקוד.
ReleaseSafe
- אופטימיזציות ובדיקות. ReleaseFast
- אופטימיזציות ללא הבדיקות. ReleaseSmall
- בניית הקוד הכי מהיר.אם Rust
זה הנמסיס של שפת C++
אז זיג זהו האח החורג של שפת C
.
שגיאות בזיג הם ערכים שלא ניתן להתעלם מהם וצריך להתייחס אליהם.
זהו קונספט שלא תמיד קיים בשפות תכנות אחרות.
שפות דינאמיות מאפשרות התעלמות מוחלטת.
שפות גנריות בדרך כלל מאפשרות להניח שהקוד תקין - זיג לא מבצעת כאלו הנחות.
אחד האלטרנטיבות ל npm
הוא - bun
.
הוא כתוב ב-zig
!
והביצועים שלו מרשימים :)
האסקל זוהי שפת תכנות פונקציונאלית בעלת ערכים דקרלטיביים.Type
ים מוצהרים, ניתן ליצור טייפים משלנו או להשתמש בקיימים.
כמו כן התחביר עובד מאחורי הקלעים בעזרת Lambda calculus
.
לכן השפה מתאימה לכל המתמטיקיים שנהנים מפונקציות :)
1 | main :: IO () |
האסקל זו שפה הצהרתית - זאת אומרת שעל מנת להשתמש במשהו צריך להצהיר עליו.
כאן אנו מצהירים על השימוש בIO
ועל הפונקציה putStrLn
שמדפיסה החוצה את השורה.
בניגוד לשפות OOP
, ללמוד האסקל עוזר בלהבין את מהות הפונקציות.
בהאסקל לוקחים את זה צעד קדימה - כמעט כל דבר זה פונקציה!
מה שמאוד מקל על התחביר לפונקציות.
1 | a b c d = |
כדי לקרוא לפונקציה ניתן לכתוב f a b
או (f a b)
.
אבל בהאסקל צריך לשכוח מהצהרות קלאסיות כאלו:f (a, b)
. <- זהו תחביר לא טוב!
קיורינג זהו קונספט המאפשר לפצל פונקציות ע”פ הפרמטרים שלו וליצור פונקציות חלקיות.
למשל בפסודו קוד:
1 | MyAddFunction(a,b) => a + b |
דוגמא בפייתון:
1 | def Add(a,b): |
אנחנו נרצה למשל לפצל את חיבור הארגומנטים כך שיהיה לנו רק פרמטר אחד בכל פעם:
1 | a = 5 |
אז נוכל להחזיר פונקציה על מנת לממש את זה:
1 | def Add(a): |
כעת בהאסקל מגדירים קיורינג בעזרת חצים: [a] -> [a] -> [a]
זהו סוג משתנה המגדיר שני פונקציות, הראשון זהו רשימה שמחזיר [a] -> [a]
.
והשני מחזיר את התוצאה הסופית [a]
.
זהו ההגדרה לחיבור מחרוזות למשל, כי מחרוזת זה רשימה של תווים!
זה מה שקורה בעצם כאשר מבצעים חיבור מחרוזות:
1 | "A" ++ "B" |
ניתן לתאר זאת כך:"A" -> "B" -> "AB"
.
בהאסקל:
1 | greetCurried :: String -> String -> String |
ניתן לראות שבקלות יצרנו פונקציה חדשה עם פרמטר פחות!
שפת תכנות פונקציונלית דינאמית עם יכולות Pipeline
.
השפה מתמחה במקביליות, פשטות, הרצה על Earlang VM
.
כמו המכונה הווירטואלית של C#
- ניתן להריץ כל קוד earlang
ביחד עם elixir
.
1 | IO.puts "Hello World" |
כפי שרואים השפה מאוד פשוטה, על מנת להדפיס נשתמש ב-IO.puts
.
חלקינו מכירים את הקונספט מפקודות לינקוס:cat result.txt | grep "Name"
הקונספט לוקח פלט מצד אחד ונותן אותו כקלט לצד השני.
בפקודת הלינוקס הזו למשל, אנו מדפיסים את הקובץ ואז מקבצים לפי שם.
באליקסיר הקונספט גם עובד כך:
1 | name = "Bob Alice The Great" |
ניתן לקרוא לזה ככה אך זה מגושם יותר:
1 | name = "Bob Alice The Great" |
קיימות שפות גנריות רבות לשימוש כללי.
אך עם עליית השפות הכלליות כך גם עלו שפות תכנות למטרות ספציפיות.
Dart
היא שפה כללית - אך שנבנתה למטרות בניית ממשקי משתמש.
בעזרת השפה ניתן לייצר אירועים ולתפקד בצורה אסינכרונית בקלות.
ממשקי משתמש נבנים ע”י אירועים, האסינכרוניות של דארט מאפשרת ליצור ולנהל את הממשק משתמש בקלות רבה.
אחד הכלים הפופולריים הוא Flutter
- המאפשרת לכם לבנות אפליקציות מאוד בקלות.
1 | void main() { |
התחביר של השפה מאוד פשוט ודומה לשאר השפות.
אחת הסיבות לפופולריות של השפה היא הספרייה Flutter
.
כלי עוצמית וקל לפיתוח אפליקציות!
אה כן, אמרתי כבר שזה Open source
?
זוהי גם שפה מיוחדת אשר לא בדיוק עובדת כפי שהייתם מצפים מכל שפת תכנות.
השפה הזו מתקמפלת ל-ג’אווה סקריפט ומאפשרת לכתוב ממשקי משתמש אינטרנטיים בקלות יתרה!
1 | import Html exposing (text) |
התכנית פשוטה - מייצאת טקסט שכתוב בו Hello!
.
קיימות הרבה דוגמאות, ניתן למצוא את חלקן כאן:
https://elm-lang.org/try
ניתן לשלוח בקשות Http
:
1 | getRandomQuote = |
ככה שזו שפה פשוטה מאוד לממשקי משתמש, זה מה שהופך את זה לעוצמתי!
כמו כל פלטפורמה לפיתוח ווב גם elm
יודעת לעשות:
http
השפה הכי חמודה לפיתוח משחקי מחשב.
היא קלילה וכיפית, ניתן לפתח בה משחקי דו מימד ונבנו בה כמה משחקים שהם בסטים!
1 | function love.draw() |
ציור:
1 | function love.load() |
הקונספטים בשפות תכנות שונות יכולים לתת לכם ראייה מעט שונה על תכנות וכתיבת קוד.
הנה כמה שפות נוספות שהייתי ממליץ להכיר:
Rust
: שפה המתחרה ב-C++, מהירה ובטוחה.
הקונספט בראסט שהיא שפה בטוחה מבחינת שימוש בזיכרון אך ללא GC.
Ruby
: רובי זו שפה כיפית!
במיוחד בשילוב Ruby on Rails
הפלטפורמה מעדיפה קונבנציות ע”פ קונפיגורציה.
הקונספט הזה חשוב מאוד כאשר בונים אפליקציות גדולות.
TypeScript
: מימוש המייקרוסופטי לשפת טייפים במקום ג’אווה סקריפט.
Racket
: שפת תכנות ל…שפות תכנות! משונה? כן גם אני חושב.
ארצה לכתוב עליה בעתיד אז לא אדבר עליה יותר מדי כרגע :)
C++
: זו שפה שכולם מכירים אך לא כולם מפתחים בה.
יש שני קונספטים שהייתי רוצה שעולם הפיתוח יילמד ממנה, ולמה היא כזו עוצמתית.
הקונספט הראש הוא Compile Time
.
ניתן לבצע הרבה מאוד חישובים ואפילו דברים כמו Conditional Inheritance
בזמן הקומפילציה!
הקונספט השני הוא חופשיות - ניתן בשפה לתכנת כל דבר, זה מאפשר גמישות רבה, אך עם כל כך הרבה כח גם מגיעה הרבה אחריות :)
תודה על הקריאה!