CodeGym /בלוג Java /Random-HE /בחירת שפת תכנות
John Squirrels
רָמָה
San Francisco

בחירת שפת תכנות

פורסם בקבוצה
נתקלתי לראשונה בתכנות בבית הספר, בשיעורים על מדעי המחשב. אלה כללו כמה הסברים מייגעים כיצד פועלות מערכות מספרים n-אריים. וכמובן, היה מבחן שדרש ממך לכתוב אתר משלך. בזמנו נראה היה לי שלא יכול להיות עיסוק משעמם יותר. כמה טעיתי! לרוע המזל, תוכנית למדעי המחשב בתיכון אינה מספקת תמונה מלאה של עבודת ה-IT, והיא אינה מסבירה כיצד לבחור שפת תכנות. לפני ששואלים "איזו שפת תכנות כדאי לי ללמוד?", מתחיל צריך להכיר את השפות שקיימות בחוץ וכיצד הן שונות זו מזו. בחירת שפת תכנות - 1

סף כניסה: גבוה, נמוך, בינוני

מתכנתים מדברים לעתים קרובות על "סף הכניסה" - מושג שמשקף את כמות המאמץ הנדרש לכל "מפתח זוטר" נתון לשלוט בשפת תכנות מספיק טוב כדי לכתוב את התוכנית הרצינית הראשונה שלו ולמצוא עבודה. "סף הכניסה" מורכב מידע של:
  • מוזרויות תחביר וניואנסים של השפה
  • ספריות
  • אלגוריתמים ומבני נתונים.
עבודה באקסל יכולה אפילו להיקרא סוג של תכנות. אגב, תוכנת המשרד המוכרת הזו אינה פשוטה כפי שהיא נראית. עבור משתמש אחד, סף הכניסה עשוי להיות היכולת ליצור טבלה. אחרת, זה עשוי להיות ידע של נוסחאות ופקודות מאקרו מורכבות. בכל מקרה, סף זה קטן. בהמשך מגיעות מעין שפות, כגון 1C -תכנות. אז יש את השפות הפשוטות ביותר ללמידה, למשל PHP . יתר על כן, יש לנו שפות עם תחביר מקורי (בדרך כלל נגזר מאנגלית) שאינן מחייבות אותך לטפל בניהול זיכרון, למשל Java ו- JS . אז יש שפות הדורשות טיפול זהיר ביותר בזיכרון, מבני נתונים ואלגוריתמים, למשל, C ו- C++ . לשפות צעירות מרובות פרדיגמות, למשל, Scala , יש אולי את סף הכניסה הגבוה ביותר, מכיוון ששליטה בהן דורשת ממך לצלול עמוק לתוך כל כך הרבה פרדיגמות תכנות. אבל לפני שאתה בוחר שפה, עליך להחליט מה אתה רוצה לעשות הלאה: לפתח עבור האינטרנט, הארגון, המחשב השולחני או המכשירים הניידים .

אינטרנט או לא אינטרנט?

אינטרנט

ניתן לחלק מתכנתי אינטרנט למפתחי Frontend ו- Backend . אתה צריך להבין מה משמעות המונחים האלה. מפתחי Frontend מעורבים בצד הלקוח, כלומר במה שהמשתמש רואה. ה"קצה האחורי" עוסק במניפולציה ואחסון של נתונים - החלק של שירות שפועל על שרת. למפתח Frontend שמחליט איזו שפת תכנות ללמוד, מסגרות JavaScript ו-JavaScript (Angular JS, React ואחרות) חיוניות. דיאלקטים של JS, כגון CoffeeScript ו-TypeScript, אינם פופולריים כמו האב שלהם, אבל הם גם יכולים להיות שימושיים. יש גם פלאש AS, ופעם היו JScript ו-VBScript, אבל רק דינוזאורים זוכרים את זה =) חוץ מכל זה, צריך להבין HTML ו- CSS . בחירת שפת תכנות - 2מתחילים רבים חושבים ש-JavaScript ו-Java הם כמעט אותו דבר. אל תבלבלו בין השפות הללו. JS נקרא בעבר "LiveScript" וקיבל את שמו הנוכחי רק בגלל הפופולריות של המילה "Java". למפתחי קצה של אינטרנט , PHP, Python, Ruby, Perl ו-Java מתאימים. כאן אני רוצה להתמקד ב-PHP (על שאר השפות נדבר בהמשך). PHP היא אחת השפות הקלות ביותר ללמידה, עם סף כניסה נמוך. על פי סקר של מפתחי אינטרנט ידועים, רובי צובר לאט אבל בטוח פופולריות - הוא אהוב על התמציתיות והיופי שלו.

לא אינטרנט (ארגוני, שולחן עבודה, נייד)

שילבתי בכוונה את שפות התכנות הבאות לקטגוריה זו עם שם מוזר. אתה יכול להשתמש ברובם כדי לכתוב יישומים ארגוניים, שולחניים ואפילו ניידים. Python היא שפת תכנות מונחה עצמים קלה להבנה והפכה פופולרית להפליא לאחרונה עקב למידת מכונה לצמיחה (ML): מפתחי ML עושים שימוש נרחב ב-Python. ML הוא תחום די חדש ב-IT, ולמרות שכבר ראינו אותו נושא פרי, לא הייתי ממהר להיכנס לתעשייה הזו בבחירת שפת תכנות. ראשית, תזדקק להבנה מצוינת במתמטיקה. שנית, גל הפופולריות עשוי לעבור באותו האופן שבו עבר עבור "בלוקצ'יין" או "ננוטכנולוגיה". עם זאת, אתה אולי זוכר ש- Python משמש בפיתוח אתרים. C++ : שפה קלאסית שבה הכל בנוי על האופרטור "פלוס פלוס". שפה זו היא האב הקדמון של כל שפות התכנות הפופולריות מונחה עצמים, ומתחיל בהחלט צריך לשים לב אליה. יישומים פופולריים רבים נכתבו באמצעותו. אבל הסיכוי המצוין "לירות לעצמך ברגל" והתחביר הקשה להבנה מביאים לאפס את ההסתברות שמתחיל ישלוט במסטודון הזה של התכנות. Kotlin , שהוא כמו Java עבור היפסטרים, הוא שילוב מטורף של OOP ותכנות פונקציונלי. זה היה פופולרי לאחרונה בשל העובדה שמפתח מנוסה עובר מג'אווה לקוטלין יכול לשפר ברצינות את הפרודוקטיביות שלו. מפתח מנוסה ירגיש נוח בשפת התכנות הזו במהירות. אגב, אותו הדבר חל על סקאלה, אבל קוטלין פופולרי בעולם האנדרואיד. ג'אווה קל למתחילים ללמוד. במיוחד בעזרת CodeGym =) תחביר Java מובן ולמרות שיש סיכון של "לירות לעצמך ברגל", זה לא קריטי.

OOP או POP?

הגישה הפרוצדורלית

הגישה מכוונת הפרוצדורה כוללת כתיבת תוכנית המורכבת מהצהרות עוקבות שניתן להרכיב אותן למכלול מאוחד כדי לפתור ביעילות מערכת ספציפית של בעיות. שפות כאלה כוללות C , PureBasic ו- Pascal . במילים אחרות, השפות שמביאות ייאוש לתלמידי תיכון ולבוגרי תואר ראשון. יש גם את שפת ה-GO הצעירה יחסית . עם זאת, היכרות עם שפות פרוצדורליות שימושית מאוד עבור מפתח פוטנציאלי. ההתעמקות שלי בשפות פרוצדורליות הגיעה עם מערכת Wolfram Mathematica ומחקר באוניברסיטה. אלגוריתמים נכונים ונהלים פשוטים, שנעו באופן ליניארי מתחילת התוכנית לסוף, אפשרו לי לחשב ערכים רלוונטיים לפיזיקה תיאורטית מודרנית. שפת התכנות ה"רציפה" הזו היא בדיוק הדבר שיעזור לך להבין שלפעמים קל יותר לכתוב קוד שמבצע חישובים באופן ידני. תכנות מונחה תהליכי למידה (POP) מספקים הכשרה אלגוריתמית טובה, שמעסיק כמעט תמיד רוצה לראות אצל מועמד לעבודה. כל דבר ב-IT בנוי על הבסיס של שפות פרוצדורליות, אז אל תזלזל בהן. אגב, מתחילים שמחליטים איזו שפת תכנות ללמוד חושבים לרוב שרק שפות OOP תומכות בריבוי הליכי שרשור. זה לא נכון. שפות תכנות פרוצדורליות מאפשרות גם חישובים מקבילים. בחירת שפת תכנות - 3

הגישה מכוונת עצמים

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

דוגמא

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

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

  • עשה
  • נפח מנוע
  • כוח סוס
  • שָׁנָה
  • חדש או משומש
  • מחיר

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

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

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

אז, OOP הוא סגנון תכנות המאפשר לך לשלב נתונים ושיטות לישות אחת ולעבוד איתם כאובייקט מאוחד. ניתן לסדר ישויות בהיררכיה ולקיים אינטראקציה זו עם זו מבלי להתעמק בפרטי היישום הפנימיים של זו. אציין שלוש סיבות מדוע OOP היא הגישה המתקדמת יותר עבורי:
  1. OOP כרוך בפיתוח עצמאי של מודולים בודדים, המאפשר למתכנת או לצוות לבחור את השיטה ואת הגבולות של קשר וחילופי מידע.
  2. קוד המחולק למודולים קטנים הוא הרבה יותר קל לקריאה מאשר פרוצדורות מונוליטיות. כתוצאה מכך, אדם מבחוץ יכול להבין במהירות את הקוד שלך, וכמו כן, אתה יכול להצטרף לפרויקט חדש במידת הצורך.
  3. ניתן לשנות מחלקה אחת מבלי להשפיע על האינטראקציה של אחרת, אך שינוי כזה יכול להשפיע על ההיררכיה של אובייקטים ילדים. לאחר ששלטת בגישה זו, הרחבה ושינוי של תוכנית הופכים להיות טריוויאליים.
זכור שגישה אחת אינה סותרת את השנייה, אך OOP עדיין גבוה יותר בהיררכיה. אז למה אני ממליץ על Java? אציין את הסיבות הבאות:
  1. חוצה פלטפורמות.

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

  2. תיעוד.

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

  3. פּוֹפּוּלָרִיוּת.

    ג'אווה היא שפת התכנות הפופולרית ביותר בעולם: בנוסף למפתחי האנדרואיד והאינטרנט הנ"ל, כמעט כל מפתח ארגוני כותב בג'אווה. ארגונים מתייחסים לפיתוח פנימי תאגידי הנחוץ לצרכים של תאגידים גדולים.

    מדי שנה, שונאים חוזים את "מותה של ג'אווה". הם אומרים, " אורקל תפסיק לתמוך בזה. אתה לגמרי מבזבז את הזמן שלך. " זה לא נכון! הם מבטיחים לשחרר גרסאות חדשות של Java כל שישה חודשים.

    עבורי, ביטויי הלמבדה בג'אווה 8 היו מהפכניים והתגלות, שלא לדבר על הגרסאות החדשות! כרגע אני עובד על פרויקט "מורשת", אז אני לא מתעמק בחידושים האחרונים, אבל עובדה ש-Java חיה.

    בחירת שפת תכנות - 4
  4. דְמוּי אָדָם.

    במשך 4 השנים האחרונות, אנדרואיד מחזיקה בעקביות ביותר מ-80% משוק הטלפונים הניידים . טלוויזיות, נגני מדיה ואפילו מערכות מידע בידור לרכב פועלות על מערכת הפעלה זו. ופיתוח אפליקציות למערכת ההפעלה הזו מתרחש בעיקר ב-Java. רק דמיינו את הסיכויים שנפתחים. כשהגעתי לעבודה כמפתחת אנדרואיד, תהיתי כמה שווה המוצר שאני מפתח? כפי שהתברר, המחיר היה כ-5 דולר לשנה. זה מעלה את השאלה, "אז מאיפה מגיע הכסף עבור המשרד הזה, המשכורות, חדר החטיפים, שולחן הפינג-פונג, הרובוטים והטבות אחרות? התשובה טמונה בנפח: לאפליקציה שלנו יש 20 מיליון משתמשים.

  5. משכורות.

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

הפופולריות של שפת התכנות

יש מקורות מידע רשמיים, אז בואו נפנה אליהם. לפי TIOBE , Java מדורגת במקום הראשון החל מאוקטובר 2019. בדירוג PYPL , Java מדורגת במקום השני, הרבה לפני JS ומתחרה לפייתון האופנתי.

סיכום

כאשר מתחיל שוקל לבחור שפת תכנות, זה מה שעליו לשים לב אליו:
  • פופולריות (ג'אווה תופסת בעקביות עמדה מובילה)
  • סף כניסה (עבור Java, הוא בינוני: מעסיקים דורשים מגוון רחב למדי של מיומנויות)
  • חומרים זמינים (ברוך הבא ל-CodeGym =))
  • תחומי יישום: ככל שיותר תחומים בהם נעשה שימוש בשפת תכנות, נדרשים יותר מומחים בשוק. כבר הזכרתי כיצד Java תומכת בפיתוח חוצה פלטפורמות, אבל אני אף פעם לא נמאס לחזור על זה.
כמובן שבכל מקום יש מלכודות, אבל מי שעושה צעד מתקדם: רק אתה יכול להחליט באיזו שפת תכנות לבחור. בהצלחה בלמידה!
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION