בחירת שפת התכנות הראשונה שלך

אין ספק שזו אחת השאלות שהכי מגיעות לתיבת הדואר הנכנס שלי כשמדברים על תכנות. אם אנו הולכים לפתוח סדרת מאמרים שתאפשר לך ללמוד לתכנת ולהחזיר ידע בחינם בצורה של תרומות לקהילות תוכנה חופשיות / בקוד פתוח ברחבי העולם, יש צורך לענות על הבסיס הזה אם קצת קשה. שְׁאֵלָה. איזו שפת תכנות עלי ללמוד?

קצת היסטוריה

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

שפות מכונה (רמה נמוכה)

ידוע בכינויו עצרת, הן שפות תכנות שנוכל להגדיר כניבים של שפה כללית יותר ... זה נשמע קצת מסובך אבל אני הולך להמחיש את זה ... אנחנו יודעים שהשפה האוניברסלית של המחשוב היא חשמל, פירוש הדבר שבסופו של דבר מה שהמחשב קורא 0סאי 1כן, בואו נקרא לזה eמחשב אנגלית. בדוגמה זו ספרד הוא הכלל הבסיסי, אך כידוע, הספרדית המדוברת על ידי הלטינים אינה זהה לזו המדוברת בספרד, ואף על פי כן הספרדית של פרו אינה זהה לספרדית של ארגנטינה. ברור שלכולנו יש כמעט אותן מילים (0סאי 1s), אך השימוש והמשמעות עשויים להשתנות בהתאם להקשר.

זה קורה ברמת המעבד. כשאנחנו מדברים על ארכיטקטורות מחשוב, (amd64, intel, arm, ...) אנו מתייחסים לניב של זה מחשב ספרדית. הסיבה לכך היא שחברות שונות מבינות את הסדר והמשמעות בדרכן שלהן, ולכן חלקן משתנות בפרטים כמו זרימת הזרם, או הסדר שבו הם הולכים להישמר. 0סאי 1s.

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

שפות ברמה גבוהה

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

שפות מורכבות

בואו נראה דוגמה מעשית למה שאני מגיב. בואו נסתכל על תוכנית שפה C פשוטה מאוד שמדפיסה שורת קוד אחת.

שֶׁלוֹ. כריסטופר דיאז ריברוס

לאחר ההרכבה יש לנו את הדברים הבאים:

עיצוב משלו: כריסטופר דיאס ריברוס

אבל עכשיו בואו נראה מה נצטרך לכתוב כדי לשכפל את אותה התוצאה בקוד הרכבה:

שֶׁלוֹ. כריסטופר דיאז ריברוס

זהו התרגום של שלוש שורות הקוד שלנו מ- simple.c, הקובץ simple.s נוצר באמצעות הפקודה gcc -S simple.c וזה מה שהמעבד שלנו יבין בניב עצרת. ברור על מנת ליצור הפעלה שמורכבת מ 0סאי 1s הקובץ צריך להיות מעובד simple.s ולחבר אותו לספריות המשותפות של המערכת שלנו. זה נעשה באמצעות אספן (as) ו מחבר (ld).

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

פירשו שפות

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

שֶׁלוֹ. כריסטופר דיאז ריברוס

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

שֶׁלוֹ. כריסטופר דיאז ריברוס

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

הקלדה

זה מאפיין של שפות תכנות, אלה יכולות להיות בְּתוֹקֶף חָלוּשׁ הוקלד. אני אשאיר את הנושא הזה לפוסט אחר, מכיוון שיש צורך וסקרן להבין כיצד נשמר זיכרון בתוכנית, אך לעת עתה עלינו רק להבחין: שפות שהוקלדו חזק הן אלה הדורשות הכרת סוג הנתונים שעובדים על משתנה או קבוע, בעוד ש- חָלוּשׁ סוגים יכולים לבצע המרות ב- משתמע והכל יהיה תלוי בהיררכיית המרה ואחריה השפה. (אם זה לא מובן עכשיו, אין בעיה, נעזוב את זה להמשך)

פרדיגמות

כמו כל דבר בעולם GNU / Linux, שפות התכנות מבוססות על פי פרדיגמות, וקהילות נוצרות סביבן. לדוגמא יש לנו את קרן פייתון o אוֹדֶם o PHP o Bash (במקרה זה מדובר בקהילת GNU). מה שאני רוצה להגיע אליו זה שאני לא יכול לבטא את המספר הרב של יתרונות וחסרונות שיש לכל אחד, אבל אני יכול לומר לך שבמקום שיש שפת תכנות בחינם, יש קהילה ללמוד ולהשתתף בה. ראוי להזכיר שרבים אם לא כל מתורגמנים לשפה כתובים בספרה C, או נגזרת קרובה כלשהי, ופיתוחם מתבצע בדרך כלל על ידי קבוצה קטנה יותר של הקהילה, האחראית על קבלת החלטות שישפיעו על כל משתמשי השפה. ניתן אפילו להקים מוסדות על מנת להבטיח התפתחות נכונה של השפה, כפי שקורה ב- C.

באיזה לבחור?

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

למד עם משהו מרגש

זו העצה הטובה ביותר שאני יכול לתת לך, אם אתה רוצה ללמוד משהו, תחילה עליך למצוא משהו מרגש, אחרת יהיה די קשה להתגבר על עקומת הלמידה האופיינית לשפת תכנות כלשהי. נניח שאתה מנהל מערכות, במקרה כזה ייתכן שתצטרך ללמוד שפה אידיאלית scripting (מפרש), בתוך אלה יש לנו פרל, פייתון, בש וכו '... אולי שלכם משחקים, ישנם פרויקטים רבים בשפות כמו Javascript, Lua, C ++, תלוי בסוג המשחק הרצוי לשחק. אולי תרצה ליצור כלי ברמת המערכת מכיוון שיש לנו C, Python, Perl, כפי שתראה שחלקם חוזרים על עצמם, וזאת מכיוון שניתן להשתמש בשפות רבות למשימות רבות, ולכן ההגדרה שֶׁל שפות רב תכליתיות ברוב אלה.

התחל פרויקט

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

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


תוכן המאמר עומד בעקרונותינו של אתיקה עריכתית. כדי לדווח על שגיאה לחץ כאן.

37 תגובות, השאר את שלך

השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.

  1.   אנונימי דיג'ו

    כמו תמיד 10 !!!!!! תודה על המאמרים שלך. ברכות ועוד לבוא !!!!

    1.    ChrisADR דיג'ו

      תודה רבה 🙂 מעודד אותי להמשיך לכתוב. לחיים

  2.   Rubén דיג'ו

    אני חושב שזו טעות לשאול את השאלה "באיזו שפה לבחור?" אני מאלה שחושבים ששפה היא המעטה ביותר, הדבר החשוב הוא ללמוד את יסודות התכנות ו"לחשוב חישובית ". החלט על תחביר, הקלדתו, אם הוא תומך ב- OOP, בתועלתו וכו '. אני חושב שזה משהו שיבוא בטבעיות באולפן, אחרי הכל, כל מתכנת יודע יותר מ -1, 2 ו -3 שפות ... ובזכות מושגי התכנות (ולא התחביר) שיש לו, הוא מסוגל לתכנת בשפה שעדיין לא התנסית בה.
    עם זאת, עבור היוזמים, אני חושב ששפה טובה יכולה להיות פיתון על פשטותה, אך מעל הכל, ללכת קצת יותר רחוק, ללמוד אלגוריתמים ולדעת איך הדברים עובדים "בפנים".

    ברכה ChrisADR

    1.    ChrisADR דיג'ו

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

  3.   deibis contreras דיג'ו

    תודה על ההודעה זה היה טוב.

    לגבי

    1.    ChrisADR דיג'ו

      שלום דייביס, תודה ששיתפת 🙂 ברכות

  4.   JorgeFS דיג'ו

    עצתי: כל דבר שאינו PHP. לפני עשרים שנה הגיעה PHP לתחושה מסוימת בקיומה בשל רמת המורכבות הגבוהה שתכנתה את האינטרנט בשפה אחרת באמצעות CGI. אבל כיום יש מגוון גדול של מסגרות שהופכות את פיתוח אתרים להרבה יותר מהנה בשפות עוצמתיות, כמו Django ל- Python, Spring for Java או Rails for Ruby. למרות ש- PHP מופיע כיום בכל תרשימי הפופולריות של השפה, לדעתי PHP תאבד מהרלוונטיות שלה לאורך זמן.
    אני ממליץ בחום להתחיל ב- C \ C ++ להבין את מציאות התכנות, למרות שעקומת הלמידה תלולה.
    ברכות.

    1.    ChrisADR דיג'ו

      היי חורחה, תודה על השיתוף, רק נזכר בלאראבל, שהוא מסגרת די מוצקה, אני אישית מעולם לא אהבתי את אביב או ג'אווה לצורך פיתוח אתרים, אני מוצא את זה מסורבל למדי, אבל אני מניח שזה חלק מהפרק הזמן שהם שהו השוק, באותה תקופה שהיו חלוצים ובוודאי שהחלופות המודרניות (Js, Python ו- Ruby) הצליחו לשפר את דרך הצגת הקוד הקריא והניתן לשינוי ללא הרבה עבודה.
      אני נוטה גם לאנשים שלומדים C / C ++ בשלב כלשהו בחייהם, התחלתי עם Java, אבל אני מניח שזה היופי של תכנות, אתה יכול להתחיל בכל מה שתרצה, כל עוד אתה עקבי זה יעזור 🙂 לחיים

    2.    Rubén דיג'ו

      אני לא יכול לחלוק איתך יותר. התחלתי לפני שנים רבות עם C ו- VB, אחר כך להתמקד ב- PHP ו- JS (מכיוון שהתמקדתי בפיתוח אתרים) ובהמשך תוך כדי הלימוד למדתי C / C ++ ו- Java בעיקר.
      ל- PHP מספר יתרונות שלא יכולתי לרשום בהודעה זו. PHP7 מהיר (מהיר יותר מ- Python ... ללא שימוש ב- hhvm, מטמונים שונים, מסגרות כמו Phalcon או bytecode במקרה של Python), יש לו מספר עצום של ספריות ומסגרות, יש לו כמות עצומה של פונקציות המיושמות ישירות לשימוש בהם בכל עת, התחביר שלה כל כך דומה ל- C מקל מאוד על המעבר לשפות אחרות.
      30% מהאתרים ברחבי העולם מיוצרים עם וורדפרס (PHP) וזה נראה שלא משתנה, ויקיפדיה משתמשת בו, בפייסבוק (עם hhvm) ובמספר גדול של אתרים, בסך הכל, 80%.

      אני מזכיר לך שרובי על מסילות כמו ג'נגו הם בני 12! איזו מכסה הם השיגו בזמן הזה? וכמובן, אנחנו מדברים על 2 מסגרות שלמעשה יש מונופול ואין שום סוג של פיצול. אילו חלופות רציניות אחרות יש לי? לומר כי PHP הולך לאבד רלוונטיות הגיוני מאוד.

      עכשיו כשפייתון באופנה מכיוון שיש לו עקומת למידה מהירה, זו שפה פשוטה והם מוכרים לך את זה בתור ה"היה מתכנת בעוד 20 שעות עם פייתון ועובד על זה ", בתמיכת חברות כמו גוגל וכעת יש את האופנה של חיפוש שפות חדשות (Go, Dart….) כדי לבדל את עצמך בקורות חיים (או כלידה יומית של 50 מסגרות ל- Javascript!), לא אומרת שהדברים משתנים.

      רובי היא שפה מעניינת מאוד, אך היא נשברת כל כך הרבה עם דפוסים מבוססים שקשה לי להאמין שהיא הפכה פופולארית יותר מ- PHP. כמובן, רובי לדעתי היא השפה הגרועה ביותר להתחיל בתכנות מכולם.
      אני מבין שאתה אומר לי שפייתון יכול להיות מהנה לתכנות, אפילו רובי עם אינסוף המוזרויות שלו ... אבל אביב עם ג'אווה? בֶּאֱמֶת? ג'אווה יכולה להיות הרבה דברים ... אבל מהנה יותר מ- Python ו- PHP?

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

      1.    JorgeFS דיג'ו

        "פיתון אולי הכי פחות דומה ל'תכנות קלאסי 'שקיים וניתן לראות בו' שפה לילדים '(להבין את המטאפורה), וזה בתורו יתרון וחיסרון." LOL, זה אחד הדברים המצחיקים ביותר שראיתי שאמרו על פייתון. האם אי פעם למדת פיתון באמת?
        כמה זמן עבר ברחבי העולם מחוץ ל- PHP?
        חבר PHP נולד מת. ל- PHP (\ d +) עומס רב על כך בגלל תכנון ראשוני גרוע מאוד וכדי לשמור על קהילת המשתמשים הוא ממשיך לגרור את כל אותן שגיאות העיצוב הראשוניות ביסודיות רבה. PHP נולד ללא מודולריות, עם הרבה פונקציות בסגנון C (שאגב, אני לא יודע מאיפה השגת אותו מכיוון שהתחביר שלה דומה ל- C, ניתן בקלות להעביר אותו לשפות אחרות). בשפה ברמה גבוהה, כפי ש- PHP אמור להתנהג, יש דברים מכוערים כמו שובל הפונקציות המופיע באתר הרשמי שלה http://php.net/manual/en/indexes.functions.phpהסיבה לכך היא שהיא נולדה ללא מודולריות, כך שהכל מטונף ומבולבל וללא מרחבי שמות.
        זו חתיכת קוד PHP:
        "Stream_notification_callback");
        stream_context_set_params ($ ctx, $ params);
        var_dump (stream_context_get_params ($ ctx));
        ?>
        בשלב מסוים ניתן לקבוע מהיכן יובאו כל פונקציות ה'זרם 'הללו? לא, אפשר לומר אז שהם פונקציות buildin, אבל אז המערכת האקולוגית כולה היא buildin functions?. וכך, יש הרבה אשפה בקוד ה- PHP, שאם אתה לא מצליח להבין את המורכבות וחוסר התועלת של עיצוב גרוע כל כך, סלח לי אבל עדיין יש לו הרבה מה לראות.
        וורדפרס הוא פתרון תוכנה מצוין, אך אין זה אומר שיש לו בסיס טכנולוגי טוב. אפשר לפטיש באבן ולהוציא מסמרים בשיניים, ועדיין תוכלו לבצע עבודות נגרות מצוינות, אך כמובן, עם הרבה יותר עבודה מנגר אחר שמשתמש בפטיש טוב.

        מצד שני: "להיות מתכנת בעוד 20 שעות עם פייתון ולעבוד על זה", מעולם לא ראיתי טיפשות כזו. אתה יכול ליצור אתר ב- PHP תוך 20 שעות ומבלי שיהיה לך שום ידיעה לגבי אופן הפעולה של תכנות אתרים או על התכנות עצמו. למעשה זו הסיבה ש- PHP כל כך פופולרי, מכיוון שמתחילים שנכנסים לעולם הזה רואים ב- PHP נקודה להתפתחות מהירה (ולכן כל כך הרבה קוד PHP מבאס כל כך חזק).
        לגבי החסרונות של פייתון, היחיד בו הצליחה היה לעבוד עם מצביעים, אך בכל מקרה, פייתון היא שפה ברמה גבוהה (כמו ג'אווה) והיא לא עושה שימוש בזה ברמת התחביר; אבל פעולות סיביות, רציניות?, אתה מתכוון לזה x << y, x >> y: https://wiki.python.org/moin/BitwiseOperators. הבנתי ברצינות את עניין אספן האשפה הרבה פחות: https://docs.python.org/3/library/gc.html.
        פערים ב- PHP:
        ל- PHP עיצוב תכנות מונחה עצמים (OOP) גרוע מאוד.
        -אתה עדיין לא יכול להעמיס על מפעילים.
        -הַפתָעָה, function overloading ב- PHP זה לא מה שאתה מצפה מטבע הדברים ממושג זה.
        ... .. ואני פשוט השתעממתי, היי.
        ברכות.

        1.    Rubén דיג'ו

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

          בשום זמן לא אמרתי ש- PHP היא השפה הטובה בעולם או שיש לה עיצוב למופת, אני לא יודע מאיפה אתה מקבל את זה. אני חושב שלפני שאתה שופט את הידע של אחרים עליך לשפר את הבנת הנקרא שלך. מה שנכון (ואמרתי בהודעה שלי) הוא שהתפתחות איתו היא זריזה מאוד, בנוסף לכל המערכת האקולוגית של מסגרות, ספריות וכלי עזר שתוכלו למצוא.
          כמו כן, איזה סוג של השוואה אנו עורכים? פייתון כשפה רב תכליתית או לאינטרנט? במקרה כזה, מדוע אנו משווים זאת ל- PHP? ל- PHP יש שדה ספציפי, וזה בתחום שבו פייתון (עם נתח של 0.2%, שלא השתנה השנה) מחוויר ליד PHP.
          עכשיו בואו נראה את מגמות ה- PHP; מ- 82,4% בינואר 2017 ל- 83.1% בינואר 2018: https://w3techs.com/technologies/history_overview/programming_language

          האם פייתון עומד להדיח את PHP? באיזה שנה? באיזה חמש שנים? עָשׂוֹר?
          פייתון יוכל לשמש במשימות רבות אחרות, ואף להיות בשימוש נרחב יותר מ- PHP, אך פייתון כשפת פיתוח אתרים רחוקה שנות אור מלהיות אפילו רלוונטית, 0.2% עומדים מול 83.1% (עם עלייה השנה).

          אתה גם לוקח דברים כמובן מאליו באומרו שאני לא מסתובב מחוץ ל- PHP, ורומז שאני יודע רק PHP, כשדווקא לא תיכנתתי PHP הרבה זמן haha. נכון לעכשיו, מסיבות עבודה, אני מתכנת בעיקר בג'אווה.
          גם לא אמרתי שעל ידי תכנות בפייתון אין לך ידע על bitwise, אספן אשפה או מצביע. במקום זאת, אתה יכול לתכנת בפייתון מבלי לדעת אפילו מה זה. עם זאת, אני מאוד בספק שזה יהיה המקרה של מתכנת C ++. וברור שאני עושה את ההשוואה כשפייתון נכנס לשדה זה של "שפה רב תכליתית", לא לתכנות אתרים.

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

          אני מתעקש, אתה מבסס את המסר שלך על כך שאתה אומר כמה גרוע PHP (שבחלק מסוים, אני מסכים). זה נראה לי נכון, אלא שההודעה שלי היא לא על זה, אלא מדוע PHP ימשיך להיות בשימוש והוא לא ייעלם מחר כמו שאתה חושב.

          ברכות

  5.   אף אחד דיג'ו

    C -> עבור -> (ליספ | הסקל | ג'אווה | מה שלא יהיה)

    1.    ChrisADR דיג'ו

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

  6.   mvr1981 דיג'ו

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

    1.    ChrisADR דיג'ו

      שלום mvr1981, שאלות ממש מעניינות 🙂 ​​אנחנו הולכים לסובב אותן מהאחרון לראשון.

      כיצד אוכל לשתף פעולה עם אחרים מבלי לבעוט או להדיר אותי מחוסר הידע והניסיון שלי?

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

      כמה מקורי להיות מתכנת כיום?

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

      אילו בעיות אוכל לפתור שאחרים עדיין לא פתרו בצורה הרבה יותר יעילה?

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

      למה ללמוד היום שפת תכנות עם מתכנתים כל כך טובים ומנוסים שכבר קיימים?

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

      ומה אני מתזמן?

      -זה אולי הדבר הכי קשה לענות, אבל אני אנסה לתת לך דוגמא ל- poco שהתחלתי לאחרונה לסבול מבעיות עם GNOME 24 והחיבור שלו ל- Wayland שמונעות מתוכניות כמו Shutter לקחת צילומי מסך. זו בעיה עבורי מכיוון שכשאני כותב את המאמרים שלי, אני צריך להראות לך את מה שאני אומר 🙂 כשסתכלתי קצת סביב הגעתי ליישום צילום המסך GNOME, קצת "מינימליסטי" בלשון המעטה. בין הפונקציות שלו, יש לצלם אזור מסך, אבל מה קורה אם לא צילמתי את התמונה בצורה טובה? ובכן, אני צריך לעזוב ולהיכנס שוב לתוכנית, משהו מייגע בהחלט, כפתור שאומר "לקיחה חוזרת" או משהו כזה מאפשר לי לקחת צילום חדש בלי צורך לצאת ולהיכנס שוב יעזור לי. זה פרויקט תכנות קטן, מעולם לא תכננתי שום דבר במסגרת GNOME אז ברור שיש לי הרבה מה ללמוד לפני שאני שולח את ה"תיקון "שלי עם הכפתור החדש, אבל בדרך אני לומד לתכנת ואני מקווה שזה תכונה זה יעזור ליותר מאחד כאשר הוא זמין לכולם.

      זו דוגמה, זה משהו פשוט ובוודאי שכל מתכנת "מומחה" אחר יכול היה לעשות את זה כבר, אבל בגלל חוסר זמן ברור, זה לא היה ככה, עכשיו אני יכול לעשות את זה בלי להיות סופר מְתַכנֵת.

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

      ברכות ושוב תודה

      1.    אף אחד דיג'ו

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

        1.    ChrisADR דיג'ו

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

      2.    mvr1981 דיג'ו

        תודה לך. הן תשובות טובות מאוד.

    2.    גיירמו דיג'ו

      ובכן, עבור מי שלא הולך להיות איש מקצוע בתחום, יהיה צורך לראות באיזו סביבה הם עובדים, הן למשימות ניהול והן להוראות, זה יכול להיות מעניין לדעת, למשל, Python / Basic ולדעת כיצד לתכנת פקודות מאקרו בחבילות משרדיות כגון LibreOffice או MS Office. ישנם מקרים בהם הדבר יכול לחסוך שעות עבודה רבות עבורך או עבור עובדים אחרים המקיפים אותך ומבקשים מהם לבצע כל משימה שחוזרת על עצמה, באפשרותך ליצור לוח מחוונים לחישוב מהיר של היחסים העיקריים של החברה לאחר התחברות למסד הנתונים. של זה ולבצע שאילתת SQL כלשהי.
      כמו הכל, אם אתה מכיר את הכלים בקצות האצבעות שלך אתה יכול לחשוב איך להפיק את המרב מזה. לא הכל מורכב.

  7.   מרסלו דיג'ו

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

  8.   ריקרדו דיג'ו

    לתכנות, השפה הראשונה ללמוד היא אנגלית, ואז זו שהכי מושכת אותם ונראית להם הכי יפה.

    1.    ChrisADR דיג'ו

      לא כתבתי את זה, אבל נכון - ידיעת אנגלית עוזרת מאוד מכיוון שרוב השפות רשומות בה, אבל גם מכיוון שכמות המידע הגדולה יותר ממקור ראשון גם תודה רבה על השיתוף

  9.   רובן סלגאדו דיג'ו

    מאמר מצוין, בנוסף למוטיבציה.

    1.    ChrisADR דיג'ו

      חביב מאוד, תודה רבה 🙂 ברכות

  10.   גונסאלו מרטינז דיג'ו

    תכנות הוא לדעת לנמק ולתרגם את הנימוק להוראות.

    שני הבהרות לגבי המאמר:

    1) בהתבסס על הניסיון שלי כמורה לתכנות במשך כמעט 10 שנים, זה לא משנה באיזו שפה אתה לומד, אלא איך אתה לומד וכמה מורכבת.

    אני חושב ששפה שניתן ללמוד בצורה מובנית, ואז לעבור לדברים מורכבים אחרים, קלה יותר מאשר להתחיל בשפה כמו Java מההתחלה.

    קל יותר ללמוד משהו כמו Hello World ב- C או Pascal כבסיס, מאשר בכמה שורות (PROGRAM במקרה של Pascal, או #include במקרה של C) אתה יכול להתחיל לפתח את האלגוריתם ולקודד את התוכנית עם הלוגיקה שלה ישירות, כמו ב- Java, שכשלעצמה זקוקה לשיעור, שיטה, ועוד כמה דברים שעבור מתחיל הם עומס מידע. מיותר, וייתכן מאוד להתעלם ממנה ולעבור לדברים אחרים, אך הם מושגים שנמצאים שם, ולדעתי, התבוננות על דברים אינה דרך טובה ללמוד, במיוחד אם השפה מכריחה אותך להשתמש בהם. זה כמו להתחיל אימון יעד בפעם הראשונה עם M-16, ולירות במשך חודשים במצב חצי אוטומטי אוחז בידית בשתי הידיים כמו אקדח.

    2) אם שפה מתפרשת או מורכבת תלויה ביישום שלה, ולא בשפה עצמה. לדוגמה, אם משתמשים בפייתון, עבור אפליקציית אינטרנט המשתמשת ב- wsgi (או mod_wsgi ב- apache, או uwsgi עבור Nginx), קוד הפיתון נערך בעת הפעלת המודול המתאים, ויוצר קבצי .pyc.

    ישנם גם מחוללי קבצים בינאריים עבור java (המייצרים קבצים בינאריים מקוריים במקום bytecode), או מהדרים של סקריפטים php בקבצים בינאריים טהורים.

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

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

    1.    ChrisADR דיג'ו

      שלום גונזאלו, תודה ששיתפת,

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

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

      שוב תודה רבה לך, ברכות.

      1.    גונסאלו מרטינז דיג'ו

        זו שגיאה, אין שפות מלוקטות או מתפרשות, ישנם מתורגמנים ומהדרים לכל שפה, שניהם למקרים שונים.

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

        1.    ChrisADR דיג'ו

          תודה על ההבהרה, אקח את זה בחשבון כשאחזור לנושא. לחיים

  11.   ארס דיג'ו

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

    1.    ChrisADR דיג'ו

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

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

      כיום ה- ORM (מיפוי יחסי אובייקט) לוקח כוח רב מבחינת ניהול נתונים יחסיים. זה עובר מתחביר SQL לטיפול בכיתה ותכונות ... כמעט כל השפות (אם לא כולן) מטפלות בכמה ORM.

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

      אני מקווה שזה יעזור לך, ברכות 🙂

      1.    ארס דיג'ו

        תודה, אני אבדוק את זה.

      2.    ארס דיג'ו

        שכחתי.

        מה אתה ממליץ לי לעבוד עם JAVA בלינוקס?
        אם אתה יכול להבדיל בין חינם לסגור טוב יותר.

        1.    ChrisADR דיג'ו

          Eclipse ו- NetBeans הם קוד פתוח, אני לא בטוח אם יש תוכנה חופשית בלבד, יש לי הרגל להשתמש ב- vim מכיוון שלעתים כמות הקוד הופכת את השימוש ב- IDE שלם לאיטי ונוטה לשגיאות ביצוע. ברכות 🙂

        2.    פאולזטה דיג'ו

          כדי לעבוד עם java בלינוקס אני משתמש ב- IntelliJ אני ממליץ לך.

          1.    ChrisADR דיג'ו

            נ.ב., IntelliJ היא תוכנה קניינית

  12.   je דיג'ו

    חבר'ה גם זוכרים ש ... אני עובד בבנק ואני אומר לך ששפות התכנות תופשות מקום אחורי בכדי לאפשר לנהלים של SQL ולנהלים מאוחסנים קודם.

    1.    גונסאלו מרטינז דיג'ו

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