דניאל ק

עמוד

התגובות שלי בפורום

מוצגות 15 תגובות – 1 עד 15 (מתוך 53 סה״כ)
  • מאת
    תגובות
  • בתגובה ל: שאלה באסמבלר #79282
    דניאל ק
    משתתף

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

    מישהו פה כנראה ממש רוצה לשגע את החברים שלו..

    בכל מקרה, המסך הכחול המפורסם לא נוצר בעקבות פסיקה ספציפית, אלא מגוון פסיקות מעבד. חלוקה באפס, Page faults, GPFs וכו´.

    בתגובה ל: פיסקה לכיבוי מחשב #79276
    דניאל ק
    משתתף

    כותרת: תשתמש בExitWindowsEx
    זה זהה לאופן שבו סוגרים את חלונות משפה עילית…
    דחוף את הפרמטרים למחסנית ובצע קריאה לExitWindowsEx.
    כמובן שאם אתה בחלונות NT/2K/XP אתה צריך לוודא שיש לך הרשאות לעשות זאת( על ידי קריאה לAdjustTokenPrivileges)
    הכל כתוב בMSDN.

    בתגובה ל: עזבו אתכם פסקל…. #79231
    דניאל ק
    משתתף

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

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

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

    אגב, באיזה בית ספר אתה לומד???
    די נדיר למצוא בתי ספר שמלמדים סי, הלא כן?

    בתגובה ל: אופי השאלון בשלב ב´. #79225
    דניאל ק
    משתתף

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

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

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

    בתגובה ל: חידות גמדים… #79219
    דניאל ק
    משתתף

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

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

    רמז לשאלה השניה:
    במקום כחול ואדום, תחשבו 1 ו 0.

    בתגובה ל: שאלה בסטטיסטיקה (בניםבנות) #79218
    דניאל ק
    משתתף

    כותרת: לולו, בדוק שוב את התשובה שלך, ותחסוך את הכינויים

    בתגובה ל: שאלה #79212
    דניאל ק
    משתתף

    כותרת: בן אדם, מאיפה אתה מניח שלא יודעים מתמטיקה??
    בגלל בן אדם אחד ששאל לגבי נוסחאות של מעגל? אני בטוח שמרבית האנשים פה יודעים אותם.
    אם באמת קראת קצת בפורום, היית רואה שיש פה בין השאר דיונים וחידות לא רק בתחומי תכנות, אלא גם כאלה שכוללים המון מתמטיקההרבה פעמים ברמה על-תיכונית(סטטיסטיקה, תורת המספרים, חדו"א וכו´)
    עם כל הכבוד לך, הערות כאלה ממש לא מקובלות עלי. מה גם שאתה אפילו לא יודע בן כמה מי שכתב את ההודעה הזאת. התחרות פתוחה לגילאים 15-18, ואני זוכר אפילו תחרות שאליה הגיע אפילו בן 14.

    בתגובה ל: עזבו אתכם פסקל…. #79206
    דניאל ק
    משתתף

    כותרת: מה ז"א לא צורכת מחסנית?
    מה לגבי הCall stack? איך תדע לאן לחזור בקוד אחרי שהפונקציה מסיימת?

    בתגובה ל: עזבו אתכם פסקל…. #79204
    דניאל ק
    משתתף

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

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

    ואחרון חביב, נושא שאני אישית מאוד מחבב – קריפטוגרפיה. אותם אלגוריתמים שלוקחים טקסט נחמד, טקסט יפה, טקסט מושלם, והופכים אותו לסדרה של ג´יבריש, שאף אחד מלבד המיועד יוכל לקרוא… ובכן, על ידי בניית חומרה מיוחדת שתבצע את החישובים ותותאם במיוחד לחישובים של המעבד הזה(חומרה שמבצעת חזקה מודלרית למשל, עבור הצפנות RSA), אפשר להאיץ פי כמה וכמה מונים את קצב המידע שאפשר להצפין. ואכן, כבר היום משווקים כרטיסי רשת (דוגמת ה3COM + מעבד 3XP), שמצפינים את המידע אותו הם שולחים, מה שמתבצע הרבה יותר מהר מאשר אם המידע היה מוצפן במחשב, ורק אז נשלח לכרטיס רשת.

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

    בתגובה ל: עזבו אתכם פסקל…. #79200
    דניאל ק
    משתתף

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

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

    אבל האמת? חשוב לדעת אסמבלי(לפחות ברמה מסוימת), גם אם אתה אף פעם לא תגע ממש בקוד אסמבלי: למשל את זה שפקודה כמו if או for גורמת לקפיצות בקוד מה שמשפיע הביצועים של המעבד(כל הקטע של Pipeline וprefetching).
    או אפילו בנושא הרקורסיות – כמה זכרון צריך בשביל פונקציה רקורסיבית(ולמה פונקציה רקורסיבית לא יכולה לקרוא לעצמה עד אין סוף…), ויש עוד המון דוגמאות, סתם שלפתי את השניים הראשונים שהצלחתי לחשוב עליהם.

    בתגובה ל: חידה לא קלה #79198
    דניאל ק
    משתתף

    כותרת: ליוני, ההבדל בין האלגוריתמים
    האלגוריתם שלך הרבה יותר חסכוני בקריאות לADD – על כל איבר מלבד הראשון מתבצע פעולת ADD בודדת. לעומת זאת האלגוריתם של רומי(Thewizard) משתמש ב3 קריאות לADD על כל איבר. עם זאת, בשיטה שלך חסרון אחד מאוד גדול – גודל המספרים בהם ניתן להשתמש. מאחר וכל האיברים באותו גודל(נניח 16 סיביות ), הם יכולים להכיל רק טווח ערכים מסוים. בסוף הלולאה על כל האיברים באלגוריתם שלך, האיבר הראשון למעשה יכיל את ההפך מסכום כל המספרים. המערך יכול להכיל עד אלף מספרים, מכאן שהאלגוריתם שלך מגביל את הערך הממוצע של כל האיברים במערך לתחום 32 עד מינוס 32.
    טווח הערכים באלגוריתם של רומי גדול בהרבה(ערך ממוצע של 20,000 למשל הוא סביר בהחלט).

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

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

    בתגובה ל: עזבו אתכם פסקל…. #79192
    דניאל ק
    משתתף

    כותרת: רומי, אחי, הכל טוב?
    חחח, עכשיו אתה עונה לי עוד לפני שאני כתבתי את התגובה שלי…
    לא, אני לא אומר שלא צריך לנהל ויכוח על איזה שפת תכנות. דווקא נראה לי ששווה לעשות שרשור(או thread, איך שתרצו) על זה.

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

    ואם כבר העלת את זה, אז הדיון פה הוא לא C מול פסקל, אלא High level מול low level… היתרונות והחסרונות בשניהם די ברורים – כוח מול פיתוח מהיר.. אני אישית אוהב שזה יהיה כמה שיותר Low Level, שאני ממש ארגיש את המעבד רועד כשאני מריץ את הקוד שלי. :-)
    ברור שאי אפשר לכתוב הכל באסמבלר(טוב, אפשר, אפילו היה על זה ויכוח לפני כמה שנים פה בפורום), אבל C מספק לי די הרבה כוח, ורק כשבאמת צריך, יורדים לאסמבלר.

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

    אבל עזבו אתכם מהשפות האלה. כולם לעבור לPYTHON!
    Python is an interpreted, interactive, object-oriented programming language. It incorporates modules, exceptions, dynamic typing, very high level dynamic data types, and classes. Python combines remarkable power with very clear syntax. It has interfaces to many system calls and libraries, as well as to various window systems, and is extensible in C or C++. It is also usable as an extension language for applications that need a programmable interface. Finally, Python is portable: it runs on many brands of UNIX, on the Mac, and on PCs under MS-DOS, Windows, Windows NT, and OS/2.
    ובשבילך רומי: Python is OSI Certified Open Source

    אפשר לבקש יותר???

    בתגובה ל: שאלה: #79190
    דניאל ק
    משתתף

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

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

    בכל מקרה, למה שלא תחפש באינטרנט קצת על Simpsons rule, או Integral approximation?

    בתגובה ל: חידה לא קלה #79183
    דניאל ק
    משתתף

    כותרת: סיביות זה לא קשור לשפה…
    זה קשור למספרים בינאריים – ייצוג של מספר באמצעות הספרות 0 ו 1 בלבד. "סיבית"(bit) זה ספרה בודדת בתוך מספר בינארי.

    הסבר הכי בנאלי על מספרים בינאריים:
    http://home.swbell.net/ruthven/robotics/binary.html
    הסבר טוב וקצת יותר מעמיק(כולל פעולות מתמטיות ולוגיות על מספרים בינריים, אבל עם טיפה שטויות על שפת אסמבלי
    http://webster.cs.ucr.edu/Page_AoAWin/HTML/DataRepresentation.html
    http://webster.cs.ucr.edu/Page_AoAWin/HTML/DataRepresentationa2.html
    http://webster.cs.ucr.edu/Page_AoAWin/HTML/DataRepresentationa3.html
    http://webster.cs.ucr.edu/Page_AoAWin/HTML/DataRepresentationa4.html

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

    למשל:
    19 = 10011
    18 = 10010
    18&19 = 10010

    20 = 10100
    19 = 10011
    19&20 = 10000

    אז כל שצריך לעשות, זה לבצע את הפעולה הנ"ל כדי לכבות סיבית אחר סיבית.

    בתגובה ל: חידה לא קלה #79177
    דניאל ק
    משתתף

    כותרת: מה עושים בשביל שני האחרונים
    אפשר פשוט להשתמש בשני הראשונים…
    פשוט להסתכל על המערך כעל מאין מעגל…
    את הלפני אחרון נאפס בעזרת הראשון והאחרון, את האחרון בעזרת השניים הראשונים…

    אגב, בנוגע לבדיקת הסיביות – אפשר ב O(1) אם מנצלים את זה שהביטוי
    a&a-1 למעשה מאפס את הסיבית הראשונה שדלוקה מצד ימין, לכן הבדיקה יכולה להיות:
    if( (a&=a-1) != 0 &&
    (a&=a-1) != 0 &&
    (a&=a-1) == 0 )
    (אין ברירה – תעתיקו לnotepad כדי לראות את זה נורמלי).

מוצגות 15 תגובות – 1 עד 15 (מתוך 53 סה״כ)