JavaRush /בלוג Java /Random-HE /10 מאמרים שכל מתכנת צריך לקרוא
Shoggy
רָמָה
Санкт-Петербург

10 מאמרים שכל מתכנת צריך לקרוא

פורסם בקבוצה
בהיותי מתכנת ג'אווה ומפתח תוכנה, למדתי רבות מהמאמרים הרבים שכותרתם מה שכל מתכנת צריך לדעת על..... , הם נוטים לספק מידע רב שימושי ומקיף על נושא מסוים שאחרת קשה לו. לְגַלוֹת. בחיפושי אחר ידע, נתקלתי בכמה מאמרים שימושיים מאוד שסימנתי כמידע עזר לקריאה חוזרת. הרעיון שמתכנתים רבים יכולים להפיק תועלת מקריאת האוסף הזה הניע אותי לכתוב את הפוסט הזה ולשתף אתכם בכל המאמרים האלה של "מה שכל מתכנת צריך לדעת". 10 מאמרים שכל מתכנת צריך לקרוא - 1במאמר זה, תכירו את מערך הידע הקלאסי שכל מתכנת צריך, בנושאים כמו זיכרון , Unicode , חשבון נקודה צפה , רשתות , עיצוב מונחה עצמים), זמן , קידוד כתובת URL , מחרוזת ועוד רבים אחרים. רשימה זו חשובה מאוד למתחילים ולמצטרפים חדשים מכיוון שלעתים קרובות אין להם ידע מעשי. מכיוון שרוב המאמרים מבוססים על דוגמאות מהחיים האמיתיים, מתכנתים ברמת התחלה ובינוניים יכולים ללמוד מהם הרבה. כמו כן, לימוד היסודות בתחילת הקריירה שלך יעזור לך להימנע מהטעויות שמתכנתים ומפתחי תוכנה אחרים כבר עשו במהלך מסלול הלמידה שלהם. למרבה הצער, לא כל המידע מהמאמרים המתוארים ניתן לעיכול מהקריאה הראשונה. רוב הסיכויים שאולי לא תבינו מיד חלק מהפרטים לגבי מספרי נקודה צפה, או שאתם עלולים להתבלבל מנבכי הזיכרון, אבל חשוב לשמור את האוסף הזה בהישג יד ולהתייחס אליו מדי פעם לצורך הבהרה. אז אני מאחל לך בהצלחה ותהנה מקריאת המאמרים הנהדרים הללו. אגב, אל תשכח לשתף עוד כתבות "מה שכל מתכנת צריך לדעת" אם הם עדיין לא ברשימה שלנו.

מה שכל מתכנת צריך לדעת על זיכרון

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

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

הנושא של חשבון נקודה צפה הוא מסובך ולא קל לשלוט בו. מתכנתי Java רבים אפילו לא יודעים מה יכול להשתבש כאשר משווים ערכים עם סוג float/ doubleאופרטור ==. רבים מאיתנו טועים לעתים קרובות בעת יישום חישובים כספיים בסוגים floatו double. מאמר זה הוא פנינה נוספת של סדרה זו וחובה לקרוא לכל מפתחי תוכנה ומתכנתים. ככל שאתה צובר ניסיון, עליך להיכנס למורכבות של נושאים כלליים, וחשבון נקודה צפה היא אחד מהם. כמפתח ג'אווה בכיר, אתה צריך לדעת איך לעשות חישובים כספיים, מתי להשתמש float, doubleאו BigDecimalאיך לעגל מספרי נקודה צפה ועוד הרבה יותר. גם אם יש לך ידע מוצק בנושא זה, לאחר קריאת המאמר אתה עשוי לגלות משהו חדש על פעולות נקודה צפה.

מה שכל מפתח צריך לדעת על Unicode

קידוד תווים הוא תחום נוסף שבו מתכנתים רבים נאבקים, ו"המינימום המוחלט שכל מפתח תוכנה צריך לדעת על Unicode ומערכות תווים (ללא תירוצים!)" שואף למלא את הפער הזה. לפרוטוקול, כן, זו הכותרת המלאה של מאמר זה. מחברו הוא יואל ספולסקי, ממייסדי https://stackoverflow.com . יואל כתב את המאמר הזה בבלוג שלו לפני כמעט 10 שנים, אבל הוא לא איבד מהרלוונטיות שלו בעולם המודרני. המאמר מסביר מהו Unicode, מהו קידוד, כיצד תווים מיוצגים באמצעות בתים ועוד הרבה יותר. אחד הדברים הטובים ביותר במאמר זה הוא שיטת השפה וההצגה, גם אם אינך יודע דבר על Unicode, לא תהיה לך בעיה להבין זאת. בקיצור, עוד חובה לקרוא לכל המתכנתים, המקודדים ומהנדסי התוכנה.

מה שכל מתכנת צריך לדעת על זמן

מלבד קידוד תווים, זמן ותאריכים ( Timeו Date) הם תחום נוסף שבו מתכנתים רבים, כולל אני, מתקשים. אפילו מפתחים בכירים הולכים לאיבוד ב-GMT, UTC, שעון קיץ ובשניות קפיצות. למען האמת, לא קל להתמודד עם אזורי זמן מבלי לעשות כמה טעויות, והשימוש בשעון הקיץ מקשה עוד יותר. הבעיות מחמירות אם אתה משתמש בניסוי וטעייה כי לעולם לא תוכל לפתור את הבעיה שלך על ידי כך. יש מספר עצום של דברים שיכולים להשתבש, ומספר שווה של תפיסות שגויות. דברים כמו אם תאריך מכיל אזור זמן או לא יכולים לבלבל אותך, המרת זמן UNIX לאזורי זמן אחרים יכולה לעצבן אותך, ואתה יכול בקלות לשכוח מסנכרון שעונים ועיכובים. אני מקווה שאחרי קריאת מאמר זה, הרבה מהתפיסות השגויות שלך לגבי זמן ייעלמו ותפתח הבנה מלאה של הזמן.

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

מאמר זה מתאר תפיסות שגויות נפוצות לגבי קידוד Uniform Resource Locator (URL), לאחר מכן מנסה להבהיר קידוד כתובת URL עבור HTTP, ולאחר מכן מדגים בעיות ופתרונות נפוצים. למרות שמאמר זה אינו ספציפי לאף שפת תכנות, הוא ממחיש בעיות ב-Java) ומסתיים בהסברים לתיקון בעיות בקידוד URL ב-Java, ובאפליקציות אינטרנט בכמה רמות. תלמדו דקדוק בסיסי של כתובות אתרים, תחביר כתובות אתרים כללי ב-HTTP ופרוטוקולים אחרים. מאמר זה עוסק גם במלכודות נפוצות של כתובות אתרים כגון קידוד תווים, תווים מיוחדים בחלקים שונים של כתובת אתר ובעיות בקידוד/פענוח כתובות אתרים. אם אתה מתכנת ג'אווה, תלמד גם כיצד לנהל נכון כתובות URL באפליקציית ג'אווה. כיצד לבנות כתובת URL ולהשתמש בספריית לקוח HTTP של Apache Commons. לבסוף, הוא מציע גם שיטות עבודה מומלצות והצעות לעבודה עם כתובות אתרים, כגון כיצד עליך לקודד כתובת אתר בעת בנייתה, לוודא שמסנני שכתוב כתובות האתרים שלך מטפלים בכתובות האתרים שלך בצורה נכונה ועוד. בקיצור, ספר חובה לכל מפתח ומתכנת אתרים.

מה כל מתכנת יודע על פיתוח אתרים?

המאמר המעניין הזה של programmersStackExchange עוסק במה שכל מתכנת שמיישם את הפרטים הטכניים של יישום אינטרנט צריך לשקול לפני פתיחת אתר לציבור. הוא כולל דברים מהתחומים של עיצוב ממשק וחווית משתמש, אבטחה, תקני אינטרנט, ביצועים, אופטימיזציה למנועי חיפוש (SEO), טכנולוגיות בשימוש וכמה משאבים חשובים. העולם של היום תלוי במידה רבה באינטרנט וזה די נפוץ שלמתכנת יש אתר או בלוג אישיים. הניסיון שנצבר ממאמר זה יהיה שימושי לא רק בפעילויות המקצועיות שלך, אלא גם בפרויקטים שלך. תלמדו על כל טכנולוגיות המפתח כגון HTTP, HTML, XML, CSS, JavaScript, תאימות דפדפן, טיפים להפחתת זמן הטעינה של האתר שלכם, מפות אתר XML, מפרטי W3C ועוד מספר נקודות מפתח.

מה שכל מתכנת צריך לדעת על SEO

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

מה שכל מתכנת C צריך לדעת על התנהגות לא מוגדרת #1/3

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

מה שכל מתכנת צריך לדעת על רשתות

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

מה שכל מפתח Java צריך לדעת על מחרוזות

זה המאמר שלי על java.lang.Stringובאופן אישי אני חושב שכל מתכנת ג'אווה צריך לדעת על זה. מחרוזות חשובות מאוד בתכנות ג'אווה היום-יומי ולכן ידע טוב הוא חובה לכל מפתח ג'אווה. מאמר זה מכסה היבטים חשובים רבים של מחרוזות, כולל מאגר המחרוזות, מיתרים של מחרוזות, השוואת מחרוזות עם ==vs equals(), המרת בתים למחרוזת, מדוע מחרוזת אינה ניתנת לשינוי, שרשרת מחרוזת נכונה ועוד הרבה יותר. מתכנת מתקדם אולי כבר מכיר את כל התכונות הללו, אבל למרות זאת יהיה זה רעיון טוב לסקור.

מה כל מתכנת צריך לדעת על אבטחה?

שאלה זו נשאלה על ידי מתכנת סטודנטים ב-StackOverflow. כמו שאנחנו יודעים הרבה על מושגי תכנות כלליים כמו מערכת ההפעלה, אלגוריתמים, מבני נתונים, ארכיטקטורת מחשבים ועוד דברים, חשוב לדעת גם על אבטחה. למרות שנושא האבטחה הוא די רחב, המכסה את תחומי ההצפנה/פענוח, SSL, אבטחת אינטרנט, ערפול, אימות, הרשאה וכו', יש מינימום ידע בסיסי הנדרש לכל מתכנת. באופן אישי, בתחילת הקריירה שלי לא ידעתי הרבה על אבטחה, כשהתחלתי לכתוב יישום אינטרנט מבוסס Servlet/JSP, למדתי על אבטחת אינטרנט ומספר איומי אבטחה כגון SQL Injection, Denial of Service, XML הזרקה, סקריפטים בין-אתרים ואחרים. כמפתח ג'אווה, אני עוקב כעת אחר נוהלי תכנות בטוחים של ג'אווה שמסופקים על ידי Fortify, PMP וספקי מנתח קוד סטטי אחרים. מאמר זה מכיל מבחר טוב מאוד של נושאי אבטחה וקישורים, ובין אם תקודד או לא, אין ספק שתפיק תועלת מהמשאב הזה.

מספרי אחזור שכל מתכנת צריך לדעת

מאמר זה הוא בונוס, אך עם זאת, חובה לקרוא לכל מתכנת. כדי לכתוב יישום בעל ביצועים גבוהים בכל שפת תכנות, בין אם זה Java או C++, עליך לדעת ערכי חביון בסיסיים, למשל, כמה זמן ייקח לקרוא משתנה מהזיכרון, ממטמון L1, ממטמון L2, עבור קריאה אקראית מ-SSD ומדיסק. כמה זמן לוקח לנעול/ביטול נעילת mutex כדי לשלוח חבילת נתונים מעיר אחת לאחרת או לעשות סיבוב הלוך ושוב בתוך מרכז נתונים אחד. ערכי חביון אלה אינם תלויים בשפת התכנות ומהווים חלק מהידע הבסיסי שחייב מפתח כדי לכתוב יישומי חביון בעלי עומס גבוה, נמוך. הדבר החיובי בקישור הזה הוא שהוא מספק ניתוח השוואתי של האופן שבו הערכים הללו התפתחו במהלך השנים. אתה יכול לראות מה היו הערכים ב-2006 ומה הם עכשיו. זה הכל עבור רשימת המאמרים הזו שכל מתכנת צריך לקרוא. על ידי קריאת מאמרים כגון מה שכל מתכנת או מפתח צריך לדעת, אתה מעמיק את הידע שלך בנושא ספציפי. בכנות, יש יותר מדי דברים למתכנתים ללמוד, ולמידת שפת תכנות כמו ג'אווה היא רק קצה הקרחון, אבל אין לרובנו תשוקה ללמוד. תכנות היא עבודה שדורשת פיתוח מתמיד, והדברים היחידים שיהיו שימושיים לכל מתכנת לאורך הקריירה שלו הם ידע בסיסי בדברים כמו זיכרון , Unicode , מספרי נקודה צפה , זמן , אבטחה (אבטחה) . חלק מהדברים הם ספציפיים לשפה, כמו הפוסט שלי על מחרוזת ב-Java ומה שכל מתכנת C צריך לדעת על התנהגות לא מוגדרת, אבל הם טובים ללמידה עבור מתחילים ומפתחים רבים.
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION