JavaRush /בלוג Java /Random-HE /בחירת שפת תכנות

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

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

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

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

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

אינטרנט

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

לא אינטרנט (ארגוני, שולחני, נייד)

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

OOP או POP?

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

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

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

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

דוגמא

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

Представим программу, описывающую автосалон, который продает легковые и грузовые автомобor, How новые, так и подержанные. В proceduresном языке для каждого an object нужно описать функции, обрабатывающие ввод or вывод данных для нового легкового, нового грузового, б/у легкового и б/у грузового автомобилей. А что предлагает ООП? При an objectно-ориентированном подходе нужно просто описать базовый класс ТРАНСПОРТ, который будет хранить в себе характеристики, присущие и тому, и другому типу автомобилей:

  • Марка
  • Объем двигателя
  • Мощность
  • Год выпуска
  • Новый or б/у
  • Цена

И методы для ввода-вывода информации. Затем создадим an objectы, наследующие характеристики класса ТРАНСПОРТ: ЛЕГКОВУШКА и ГРУЗОВИК. Они содержат уточнённую информацию, присущую именно таким видам транспорта, а также методы ввода-вывода.

Внезапно руководство салона решило расширить ассортимент и продавать еще и мотоциклы. Процедурный подход предложит переписать всю логику для новых и б/у мотоциклов с самого начала, в то время How ООП-язык позволит просто создать новый an object МОТОЦИКЛ, наследующий все характеристики суперкласса ТРАНСПОРТ и содержащий уточнения.

А что будет, если добавлять разные транспортные средства? Процедурная реализация будет требовать больших трудозатрат, чем ООП. Причем чем больше ассортимент, тем меньше нужно будет делать манипуляций с an objectми.

Итак, ООП — это стиль программирования, позволяющий объединять данные и методы одной сущности и работать с ними How с цельным an objectом. Сущности могут выстраиваться в иерархии и взаимодействовать между собой, не вдаваясь в подробности внутренней реализации друг друга. Для себя я выделяю три причины, по которым ООП — более прогрессивный подход:
  1. ООП предполагает независимую разработку отдельных модулей, предоставляя программисту or команде выбирать способ и границы соприкосновений и обмена информацией.

  2. Разбиение на небольшие модули намного проще для восприятия, чем монолитные proceduresы. Благодаря этому сторонний разработчик быстро разберется в твоем codeе, а ты при необходимости войдешь в новый проект.

  3. Изменение одного an object может ниHow не отразиться на взаимодействии с другим, но способно повлиять на иерархию дочерних an objectов. Освоив такой подход, расширение и доработка программы становится тривиальной задачей.
Нужно помнить о том, что один подход не противоречит другому, но иерархически ООП всё же находится выше. Собственно, почему я рекомендую именно Java? Я бы выделил следующие причины:
  1. Кроссплатформенность.

    Java работает везде благодаря JVM —виртуальной машине Java. Один из главных плюсов этого языка — кроссплатформенность: не нужно думать о том, Howую библиотеку подключить, Howова архитектура у конкретного процессора. «Написано однажды —работает всегда».

  2. Документация.

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

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

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

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

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

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

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

  5. משכורות.

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

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

כאשר בוחרים שפת תכנות, עליכם לחשוב על המטרה הסופית של הלמידה – קבלת העבודה הראשונה שלכם. כדי להעריך את הפופולריות של שפות שונות, הלכתי לפורטל גיוס פופולרי והתחלתי לבדוק את מספר המשרות הפנויות עבור בקשות שונות למוסקבה. אתה יכול לראות את התוצאות למטה.
Java: 277
פִּיתוֹן: 227
php: 188
c#: 147
c++: 131
אוֹדֶם: 40
סקאלה: 24
קוטלין: 20
אפילו פייתון הפופולרי לאחרונה לא הצליח להקדים את ג'אווה. אבל אלה נתונים סובייקטיביים: עיר ספציפית, יום ספציפי. יש מקורות רשמיים, בואו נפנה אליהם. נכון לאוקטובר 2018, לפי TIOBE, Java מדורגת במקום הראשון. בדירוג ה- PYPL , Java תופסת את המקום השני, הרבה לפני JS ומתחרה ב-Python ה"אופנתי".

תוצאות

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