השפה הראשונה
מאנשים רבים וגם מסטטיסטיקה העולמית יש שתי שפות שמככבות בפופולריות שלהן.
מתכנתים רבים לומדים אחת מהן בתור שפה ראשונה - JavaScript
, Python
.
ראש בראש - מה כדאי לי ללמוד כשפה ראשונה?
רוצים לקפוץ אל התוצאה?
שפות תכנות
שפות תכנות אלו כלים העוזרים לנו לבנות מערכות תוכנה.
מערכות תוכנה אלו מערכות מובנות אשר מסייעות לנו כאנשים לבצע פעולות באופן מהיר יותר ואף ללא צורך בהתערבות אנושית.
השפה הראשונה שלי - הקלות ללמוד עקרונות תכנות
באקדמיה לומדים את שפת C
או C++
כשפה ראשונה.
לרוב רוצים ללמד את עקרונות התכנות ברמה הנמוכה - להכיר מה זה פויינטרים, איך לממש אלגוריתמים לבדנו ולא להסתמך על ספריות כתובות מראש.
אם כן למה האקדמיה בכלל לא מלמדת אותן כשפה ראשונה?
ובכן זה תלוי בהרבה גורמים, בנוסף באיזה קורסים אתם לוקחים ולאיזו אקדמיה אתם ניגשים.
לכן אנסח את העקרון הראשון שלי לשפה ראשונה -
השפה הראשונה שלכם צריכה ללמד אתכם את עקרונות התכנות בקלות ויעילות.
די, הבנו את הפויינטרים וכמה זה נחמד לבצע maloc
ו-free
בשפת C
.
אבל זה קשה.
כמות התלמידים שנתקלתי בהן מתקשים בחומרים האלו רק כי קורסים או מורים מסוימים מחליטים להישאר לא מעודכנים.
גם בג’אווה-סקריפט וגם בפייתון הקלות והיעילות שאתם לומדים עקרונות היא מהירה.
בקטגוריה לכמה קל ללמוד עקרונות תוכנה שתי השפות מקבלות אצלי 5.
Javascript
- ⭐⭐⭐⭐⭐python
- ⭐⭐⭐⭐⭐
תחביר
לא סתם קוראים לזה “שפת תכנות”.
בכל שפה יש חוקים, בכל שפה יש תחביר.
הגדרה של משתנים
python:
1 | numberOfApples = 3 |
javascript:
1 | // ישן: |
מצד אחד בפייתון זה נורא פשוט - מגדירים שם ומאתחיל אותו עם ערך.
אבל בג’אווה-סקריפט יש 2 ניואנסים:
- יש לנו את האפשרות להגדיר משתנה קבוע בעזרת
const
. - יש לנו בלבול בשימוש בין
var
ל-let
וזה משהו שמגדיל את זמן הלמידה למתחילים.
הציון שלי:
Javascript
- ⭐⭐⭐python
- ⭐⭐⭐⭐
סולמות ונחשים
בפייתון אנחנו מגדירים Scope
בעזרת הזחות - רווחים או טאבים.
בג’אווהסקריפט אנחנו משתמשים בתחביר דומה לשפת C
- סוגריים מסולסלות.
python:
1 | def myFunc(): |
javascript:
1 | function myFunc(){ |
בסופו של יום זה נתון מאוד לסטייל אישי ולא כל כך משנה.
למתחילים זה בהחלט לא יישנה יותר מדי.
Javascript
- ⭐⭐⭐⭐⭐python
- ⭐⭐⭐⭐⭐
- יש לכם דעה אחרת? מוזמנים לומר לי בדיסקורד!
תכנות מונחה עצמים
תכנות מונחה עצמים זה קורס בפני עצמו - את עקרונתיות המנחים ניתן ללמוד בשתי השפות אך שתי השפות עושות שימוש גם מחוץ למונחה עצמים.
בסיס השפה - מונחה עצמים או פונקציות
ג’אווה-סקריפט זוהי שפה הנבנתה עם אוריינטציה תוכנתית לפונקציות.
לאחר שהשפה צברה תאוצה ורבים החלו להשתמש בה מעבר למצופה - היא החלה להוסיף תמיכה בתכנות מונחה עצמים.
התמיכה הראשונה שלה התבטאה בשמירת מצב בתוך הפונקציה עם המילה השמורה this
.
כך למעשה נוצר ה-constructor function
.
1 | function Person(name, age){ |
רק לאחר מכן נוסף התחביר המקל:
1 | class Person{ |
פייתון היא שפה דינאמית גם כן המנחה לשימוש באופן די חופשי במה שרוצים.
השפה המובנית והספריות המובנות לעיתים כתובים בצורה פונקציונלית.
למשל פונקציית האורך של רשימה:
1 | myList = [1,2,3] |
במקום:
1 | myList =[1,2,3] |
בפייתון אין תחביר שונה למחלקות - זה בנוי לתוך השפה ואין לנו constructor function
.
1 | class Person: |
באוריינטציה שלי השפות מקבלות אצלי:Javascript
- ⭐⭐⭐python
- ⭐⭐⭐⭐
ירושה
1 | class ChildClass extends ParentClass { |
1 | class ChildClass(ParentClass): |
קיים הבדל מועט והקוד די זהה.
Javascript
- ⭐⭐⭐⭐python
- ⭐⭐⭐⭐
כימוס
היכולת להסתיר מידע בתוך המחלקה.
בגרסאות החדשות של js
הוסיפו את היכולת להוסיף משתנים פרטיים באמת:
1 | class ClassWithPrivate { |
1 | class ClassWithPrivate: |
בפייתון אין באמת אפשרות להתגבר על גישה למידע - ניתן לשים _
או __
לפני השם.
זה אומר למפתחים שזהו משתנה פרטי ואין לגשת אליו מבחוץ.
בדרך כלל משתמשים רק ב-_
כי לרוב __
שמור לדברים פנימיים של פייתון ואין צורך לבלבל.
פייתון נכשלת בעניין הזה ו-js
מקבלת רק 3 מכיוון שזהו קונספט שלא הכי קל למפתחים מתחילים ללמוד דרכו.
Javascript
- ⭐⭐⭐python
- ⭐
אבסטרקציה
1 | class AbstractClass { |
ג’אווה-סקריפט איננה מאפשרת מתוך השפה להשתמש באסטרקציה אך ניתן ליצור אותה באופן די חופשי.
אין דרך “לעגן” את זה כחלק מה-API
וקוד כמו זריקת שגיאה נחוצה אם רוצים להכריח חוקים מסוימים.
1 | from abc import ABC, abstractmethod |
בפייתון פתרו את הבעיה הזו בעזרת דקורטורים - נושא די מתקדם שלמתחילים לעיתים קשה להבין אותו.
הציון שלי:
Javascript
- ⭐python
- ⭐⭐⭐
שימושיות
לשתי השפות יש שימושים רבים:
פיתוח אתרים ו-ווב
פייתון - ניתן להשתמש בספריות כמו Django
ו-Flask
.
ב-javascript
זה די בנוי בפני עצמו, אך ניתן להשתמש בה לצד שרת גם כן: Express.js
, bun flame
.
מהניסיון שלי לשתי השפות יש גישה מאוד פרגמטית וקלה.
Javascript
- ⭐⭐⭐⭐⭐python
- ⭐⭐⭐⭐⭐
לפיתוח למידת מכונה ותחום האינטליגנציה המלאכותית
Python: TensorFlow, PyTorch
Node.js: TensorFlow.js, Brain.js
לטעמי פייתון בנויה לדומיין הזה הרבה יותר טובJavascript
- ⭐⭐⭐⭐python
- ⭐⭐⭐⭐⭐
Data Science and Data Analysis
Python: pandas, NumPy, Matplotlib
Node.js: DataScience, nodeplotlib
בדומיין פייתון מקבלת הרבה יותר פופולריות במיוחד בזכות pandas
ו-NumPy
.
Javascript
- ⭐⭐⭐python
- ⭐⭐⭐⭐⭐
פיתוח דסקטופ
Python: PyQt, Tkinter, wxPython
Node.js: Electron (with web technologies)
שתי השפות לא הכי נוחות אם כי זה אפשרי, לפיתוח דקסטופ הייתי הולך בטכנולוגיות יותר .PyQT
ו-Electron
די פעילות.
אפילו ה-VS Code
כתוב באלקטרון.
Javascript
- ⭐⭐⭐python
- ⭐⭐⭐
Game Development
Python: Pygame, Panda3D, Cocos2d
Node.js: Babylon.js, Three.js, Phaser
לא השפות הפרגמטיות במיוחד לפיתוח משחקים אם כי js
בעזרת פורטים רבים של מנועי פיתוח וספריות פיתוח עשתה קאמבק מטורף.
Javascript
- ⭐⭐⭐python
- ⭐⭐
Mobile Applications
Python: Kivy, BeeWare
Node.js: React Native (with JavaScript)
ג’אווהסקריפט הפכה את פיתוח המובייל להרבה יותר פשוטה וקלה.
Javascript
- ⭐⭐⭐⭐⭐python
- ⭐⭐
IoT (Internet of Things)
Python: MicroPython, CircuitPython
Node.js: Johnny-Five
פיתוח בקרים נפוץ יותר בעזרת פייתון כאשר היא הפכה לפופולרית יותר בתחום ה-Embedded.
Javascript
- ⭐python
- ⭐⭐⭐⭐
Web Scraping and Automation
Python: BeautifulSoup, Scrapy, Selenium
Node.js: Puppeteer, Cheerio
בשתי השפות ניתן לבצע אוטומציה די בקלות ואני לעיתים קופץ ביניהן בשביל אוטומציה.
אני יודע שפייתון יותר נפוצה באזורי האוטומציה כי קל יותר לפתח בה סקריפטים.
Javascript
- ⭐⭐⭐⭐python
- ⭐⭐⭐⭐
Cloud Computing
Python: boto3 (AWS SDK), apache-libcloud
Node.js: aws-sdk, pkgcloud
תכנות לקלאוד נוח בשתי השפות
Javascript
- ⭐⭐⭐⭐⭐python
- ⭐⭐⭐⭐⭐
API Development
Python: Django REST framework, Flask-RESTful
Node.js: Express.js, Restify
נוח לפתח בשתי השפות.
Javascript
- ⭐⭐⭐⭐⭐python
- ⭐⭐⭐⭐⭐
סיכום
ציונים
קלות למידה:Javascript
- ⭐⭐⭐⭐⭐python
- ⭐⭐⭐⭐⭐
תחביר:
הגדרת משתניםJavascript
- ⭐⭐⭐python
- ⭐⭐⭐⭐
סולמות ונחשיםJavascript
- ⭐⭐⭐⭐⭐python
- ⭐⭐⭐⭐⭐
תכנות מונחה עצמים -אוריינטציהJavascript
- ⭐⭐⭐python
- ⭐⭐⭐⭐
תמיכה בירושהJavascript
- ⭐⭐⭐⭐python
- ⭐⭐⭐⭐
כימוס:Javascript
- ⭐⭐⭐python
- ⭐
אבסטרקציה:Javascript
- ⭐python
- ⭐⭐⭐
שימושיות
פיתוח אתריםJavascript
- ⭐⭐⭐⭐⭐python
- ⭐⭐⭐⭐⭐
אינטליגציה מלאכותיתJavascript
- ⭐⭐⭐⭐python
- ⭐⭐⭐⭐⭐
Data scienceJavascript
- ⭐⭐⭐python
- ⭐⭐⭐⭐⭐
פיתוח דקסטופJavascript
- ⭐⭐⭐python
- ⭐⭐⭐
פיתוח משחקיםJavascript
- ⭐⭐⭐python
- ⭐⭐
פיתוח מובייל:Javascript
- ⭐⭐⭐⭐⭐python
- ⭐⭐
פיתוח IOT:Javascript
- ⭐python
- ⭐⭐⭐⭐
אוטומציה:Javascript
- ⭐⭐⭐⭐python
- ⭐⭐⭐⭐
Cloud:
Javascript
- ⭐⭐⭐⭐⭐python
- ⭐⭐⭐⭐⭐
API:Javascript
- ⭐⭐⭐⭐⭐python
- ⭐⭐⭐⭐⭐
הציון הסופי
הציון המקסימלי ביותר יכול להיות 85.
הציון נקבע לפי כמות הכוכבים שהשפה אספה.
מתוך זה מחולק בציון המקסימלי ואז יוצא מספר בין 1 ל 100.
Javascript = 62/85 = 72
Python = 66/85 = 77
המנצחת היא - Python
.
אם אתם בוחרים ללמוד JavaScript
זה לא אומר שעשיתם בחירה לא טובה אלה העדפתם את השפה הזו.
לשתי השפות הקנתי ציון די זהה - בין 70-80.
השפות אולי יעילות ללמידה אך לא בכל תחום הן יעילות וקיימים שכבות רבות של חוסר היגיון בשפות.
בין אם זה האוריינטציה הפחות טובה של פייתון לתכנות מונחה עצמים,
או חוסר היכולת של ג’אווה-סקריפט למגר API
לפני רצון המפתח.
מה שלא בחרתם - בהצלחה ותודה על הקריאה!