הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   [PHP] משהו שחשבתי עליו.. (https://hosts.co.il/forums/showthread.php?t=48377)

בניה 26-06-07 22:32

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

Kfir.G 26-06-07 22:41

ציטוט:

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

טוב לדעתי זה חבל כי אם אתה יכול לתכנת בPHP ברמה גבוה אז assembler יהיה משחק ילדים בשבילך ובאמת חבל שאתה לא משקיע איזה שבוע~שבועיים ומסיים עם זה אבל שוב זאת רק דעתי.

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

וד"א אני לא ויקיפדיה מהלכת ;P פשוט הייתה לי בגרות על זה השנה אז אני יודע :)

בניה 26-06-07 23:01

נו אז מה זה מעבד 64 סביות? שהערכת פקודות שלו שונה.
היו פעם מעבדים של פחות מ32 סביות והגדילו את זה ל32 בלי יותר מידי בעיות.

Kfir.G 26-06-07 23:47

ציטוט:

נכתב במקור על ידי בניה (פרסם 508155)
נו אז מה זה מעבד 64 סביות? שהערכת פקודות שלו שונה.
היו פעם מעבדים של פחות מ32 סביות והגדילו את זה ל32 בלי יותר מידי בעיות.

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

BlueNosE 26-06-07 23:50

ציטוט:

נכתב במקור על ידי kfir_dnd (פרסם 508122)
טוב קודם כל נראה לי שכדאי שאני אסביר לך למה הגבול במשתנה שציינת הוא משהו כי נוצר לי הרושם שאתה לא מבין למה. מאחר ואתה פונה לdouble word כלומר ל32 סיביות או 4 בטים ואתה בוחר לפנות למספרים מסומנים כלומר חיובים ושלילים המספר מתקבל מהנוסחה הנ"ל
2^(n-1)-1
אם נציב במקום n את המספר 32 נקבל 2^31-1=2,147,483,648 ומכאן נובע שתחום המספרים הוא -2,147,483,648 עד 2,147,483,647. אני מקווה שעכשיו זה ברור ועכשיו אני אסביר לגבי ההמשך.

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

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

מקווה שהבנת :)

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

בניה 27-06-07 00:08

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

Tomer 27-06-07 10:00

ציטוט:

נכתב במקור על ידי kfir_dnd (פרסם 508122)
אני מצטער מאוד לשמוע שאתה מסוגל לתכנת בPHP ואינך יודע מה בעצם אתה עושה עם הפקודות הללו ואיך הם באמת עובדות במחשב שלך. אני ממליץ לך ללמוד קצת assembler. אין צורך להעמיק במיוחד אבל מאחר וassembler היא השפה הקרובה ביותר לשפת מכונה שקיימת היא תיתן לך מושג דיי ברור איך המחשב באמת עובד.

מי שעובד עם PHP (וכל שפת תכנות האמת, מלבד assembler) לא חייב לדעת איך עובד מעבד או איך הוא מעבד את המידע.

Kfir.G 27-06-07 11:08

ציטוט:

נכתב במקור על ידי Tomer (פרסם 508335)
מי שעובד עם PHP (וכל שפת תכנות האמת, מלבד assembler) לא חייב לדעת איך עובד מעבד או איך הוא מעבד את המידע.

זאת בדיוק הנקודה שלי... אני חושב שזה חבל שאתה לא יודע מה קורה "מאחורי הקלעים". כמו שאמרתי ואולי אנשים לא שמו לב אמרתי בפרוש שאתה יכול להיות מתכנת מצויין ולא להבין בדיוק מה אתה עושה (scripter) אבל לדעתי עדיף לנסות גם לתכנת ברמה גבוהה וגם להבין מה בעצם קורה במחשב (programer). היום אף אחד לא ידרוש ממך לדעת את זה (אלא אם כן אתה תרצה להיות מהנדס חומרה) אבל בכל זאת לדעתי כדי לדעת את זה :)

וד"א לכל אלה ממכם שתהו אני עוד לא יודע PHP רק ראיתי שיש שאלה שאני יכול לענות עליה אז עניתי. אם כבר יש דרך בPHP לפנות ליחידה של 64 סיביות (כלומר שילוב של שני double word) אז שישתמשו בה בכיף אני בסך הכל ניסיתי לענות על השאלה עם הכלים שיש לי.

ציטוט:

נכתב במקור על ידי BlueNosE (פרסם 508176)
אני אעבור חלק חלק:
1. תודה רבה לך על ההסבר המקיף. אני חושב שזה לא יותר מידע כללי למתכנת WEB בלבד, אבל בכל זאת תודה.
2. חבל לי לשמוע שאתה עושה את ההכללות האלו ומחליט שמתכנת PHP שלא יודע כיצד עובד מעבד הוא מתכנת פחות טוב. אבל אחד לא אמר שאני צריך לדעת את זה, ובכל זאת בגלל שזה נושא שעניין אותי פתחתי נושא.
3. אין לי מה ללמוד אסמבלי כל עוד אני נשאר בWEB, אם אני אחליט לעבור לתכנות אפליקציות לא רק ברשת אני אלמד את הנושא.
4. אני מתאר לעצמי שמעבדים שלא מבוססים על בינארים יעבדו הרבה יותר מהר מהמעבדים היום, ולכן מהלך כזה הוא הכרחי בשלב מסויים.

2. בתור מתכנת בסביבת PHP אין שום השפעה בין אם אתה מבין מה קורה או לא ככה שזה לא ממש משנה. אבל בשפות תכנות לא בסביבת WEB יש לזה חשיבות שכן אם יש קטעים שיש חשיבות קריטית למהירות הפעולה שלהן כותבים אותן באסמבלר ומשלבים אותן בתוכנית הכתובה בשפה עילית.
3. יש לך סיבה -> ידע כללי :)
4. איך תשמש במשהו שלא יעבוד על השיטה הבינארית? אם זה היה כל כך קל היו כבר מחליפים שיטה כי השיטה הנוכחית דיי מסורבלת. בסיס בינארי - בסיס 2 - 0,1 שזה בדיוק המצבים שיש במעבד מעבר זרם ואי מעבר זרם איך ישנו את זה... אולי אם רמות שונות של זרמים אבל אז יקח למעבד הרבה יותר זמן לפענח כל פקודה והאפקטיביות שלו תרד משמעותית.

Daniel 27-06-07 14:48

אז...

יש כמה אפשרויות,
אני לא כל כך מומחה בעניין, אבל אמרתם שאי אפשר לחשב מספר שגדול מ-2,147,483,648.

אז מה הבעייה לעשות פונקציה שבודקת, האם המספר גדול מ-2,147,483,648, אם כן-אז היא מחלק אותו לשתיים(או לכמה שצריך, עד שזה יספיק, זה כבר עבודה שלכם P: ), ונגיד צריך להוסיף 2? אז היא מחלקת את 2 במספר החלקים, ומוסיפה לכל חלק את הפלט.


או, שפשוט יהיה מערך אחד לכל מספר שגדול מ-2,147,483,648, שישמור את האחדות, עשרות, ומאות, אחד לאלפים, רבבות, ומאות אלפים, וכו' וכו' וכו'.

BlueNosE 27-06-07 15:09

ציטוט:

נכתב במקור על ידי MasterT (פרסם 508549)
אז...

יש כמה אפשרויות,
אני לא כל כך מומחה בעניין, אבל אמרתם שאי אפשר לחשב מספר שגדול מ-2,147,483,648.

אז מה הבעייה לעשות פונקציה שבודקת, האם המספר גדול מ-2,147,483,648, אם כן-אז היא מחלק אותו לשתיים(או לכמה שצריך, עד שזה יספיק, זה כבר עבודה שלכם P: ), ונגיד צריך להוסיף 2? אז היא מחלקת את 2 במספר החלקים, ומוסיפה לכל חלק את הפלט.


או, שפשוט יהיה מערך אחד לכל מספר שגדול מ-2,147,483,648, שישמור את האחדות, עשרות, ומאות, אחד לאלפים, רבבות, ומאות אלפים, וכו' וכו' וכו'.

עכשיו, תחבר את 2 המספרים ששמרת.
יש לך שגיאה שוב. אתה לא יכול לעבוד עם מספר שיותר גדול מזה - נדמה לי שזה תופס גם למספר תווים (מעל 2,147,483,648 תווים יש שגיאה)..


כל הזמנים הם GMT +2. הזמן כעת הוא 17:02.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ