نمایش نتایج 1 تا 28 از 28

نام تاپیک: یک مثال عملی که prtable بودن java رو زیر سوال برد !!!

  1. #1

    یک مثال عملی که prtable بودن java رو زیر سوال برد !!!

    سلام دوستان .
    من یه برنامه نوشتم که یه آرایه با طول ورودی می سازه و به طور رندوم توش اطلاعات میریزه بعد به 4 روش مختلف اون رو sort میکنه و زمان انجام هر کدوم از الگوریتم ها رو هم بدست میاره و نتایج sort شده و زمان ها رو توی فایل txt ذخیره میکنه .

    من این برنامه رو توی ویستا و fedora و ubuntu اجرا کردم و نتیجه منطقی بود . ولی نکته اینجاست که وقتی روی xp اجرا میکنم زمان یکی از الگوریتم ها همواره صفر میافته !!!!

    لازم به ذکره که اون الگوریتم سورت (quick sort) که همیشه با xp صفر میندازه براش بازگشتیه .
    اصلا برام قابل باور نیست !!

    خوب نتیجه ی اخلاقی اینکه java توی مثال به این کوچکی , مستقل از پلاتفورم بودن خودش رو حفظ نکرده .

    لینک دانلود سورس ها و کلاسها و فایل اجرایی http://www.2shared.com/file/3204406/...va_sample.html
    آخرین ویرایش به وسیله vahid18u : شنبه 07 اردیبهشت 1387 در 19:45 عصر

  2. #2
    فکر نکنم این ربطی به مستقل از پلاتفورم بودن ربطی داشته باشه. قرار نیست که jvm سرعت مشابه روی پلاتفورم های مختلف داشته باشه. در عین حال می توانی برنامه رو روی xp بررسی کنی که ببینی تفاوت اصلی چیه. اون شاید معلوم کنه که آیا این واقعا در مورد تفاوت پلاتفورم هست یا نه.

    فرزاد-

  3. #3
    نقل قول نوشته شده توسط fkohantorabi مشاهده تاپیک
    فکر نکنم این ربطی به مستقل از پلاتفورم بودن ربطی داشته باشه. قرار نیست که jvm سرعت مشابه روی پلاتفورم های مختلف داشته باشه. در عین حال می توانی برنامه رو روی xp بررسی کنی که ببینی تفاوت اصلی چیه. اون شاید معلوم کنه که آیا این واقعا در مورد تفاوت پلاتفورم هست یا نه.

    فرزاد-
    اصلا دقت کردی چی گفتم دوست عزیز ؟ گفتم که روی XP اجرا کردم . خوب مسلمه که یه الگوریتم sort نمیتونه 10000 عدد رو زیر 1 میلی ثانیه سورت کنه ! لا اقل این چیزیه که اجرای برنامه روی پلاتفورمای دیگه به من میگه . چطور میشه یهو توی xp همواره صفر میشه ؟

    اصلا شما بگو منطق برنامه ی من مشکل داره . دو جواب مختلف من دارم میگیرم همواره . اگر منطق مشکل داشته باشه تو تموم پلاتفورم ها داره .

  4. #4
    کاربر دائمی آواتار unix_svr4
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    Karaj
    پست
    102
    دوست عزیز vahid18u
    جاوا خیلی وقته که امتحانش رو در مورد مستقل بودن از پلاتفرم پس داده! شما نمی توانید با یک مثال ساده اثبات کنید که جاوا Croos-Plarform نیست!
    شاید jvm شما باگ دارد. الان آخرین نسخه Java 6 Update 6 است؟ شما با کدام نسخه برنامه را اجرا می کنید؟؟؟
    بهر حال هیچوقت تصمیم نگیرید. برنامه خود را Trace و Debug کنید، شاید واقعا برنامه شما یک مشکل منطقی دارد.

    موفق باشید.

  5. #5
    نقل قول نوشته شده توسط vahid18u مشاهده تاپیک
    اصلا دقت کردی چی گفتم دوست عزیز ؟ گفتم که روی XP اجرا کردم . خوب مسلمه که یه الگوریتم sort نمیتونه 10000 عدد رو زیر 1 میلی ثانیه سورت کنه ! لا اقل این چیزیه که اجرای برنامه روی پلاتفورمای دیگه به من میگه . چطور میشه یهو توی xp همواره صفر میشه ؟

    اصلا شما بگو منطق برنامه ی من مشکل داره . دو جواب مختلف من دارم میگیرم همواره . اگر منطق مشکل داشته باشه تو تموم پلاتفورم ها داره .
    هنوز می توانی یک اشتباهی چیزی کرده باشی. خواستی برنامت رو بفرست من وقت کردم بهش یک نگاه می کنم.


    فرزاد-

  6. #6
    نقل قول نوشته شده توسط javaphantom مشاهده تاپیک
    سال شکوفایی و نو آوری هست دیگه
    استاد handinux می خواد با مثال عملی نشون بده که جاوا مشکل داره.
    https://barnamenevis.org/showthread.php?t=100730
    استاد vahid18u با یک quick sort ساده کله portable بودن جاوا رو برد زیر سوال.

    جناب فرزاد کهن ترابی من با شما از طریق J2EElist یاهو قبلا آشنا شده ام. آدمی مسئول و بنظر می آیید و این طور که نوشته شده از تحصیلات بالایی هم بر خورد دار هستید. قصد جسارت ندارم ولی به عنوان یک شاگرد حیف شما نیست.
    من خودم از طریق email با بعضی از دوستان این فروم در حال ارتباط هستم و کسانی که واقعا دارن کار می کنند و می خوان یاد بگیرند چون من اعلام کردم که دیگه در این فروم چیزی نخواهم نوشت. من الان یکی از دوستان این آدرس رو برام فرستاد با این تیتر بخون و بخند.
    ای کاش این گفته های من رو کسی سانسور نکنه. ولی این دوستان که الان نامشونم بردم باید بخودشون افتخار کنند و خسته نباشید بگم بهشون که انقدر نکته بین و نکته سنج هستند.

    این مثالهای عملیتونم خواهشن برای من بی سواد و کسانی که مانند من هستند نفرسین برای خود سایت سان بفرستید.
    خدا رو چه دیدید شاید فردا همین سان براتون یک پاسپورتی جور کرد و سر از سان و بعدشم به باقی دوستان ایرانی در NASA پیوستید.
    اما استاتید خواهشن ما رو راهنمایی کنید که چی کار کنیم اول برناممون decompile نشه بعدهم بشه توی چندتا سیستم عامل مختلف درست جواب بده.
    کدام زبان
    کدام تکنولوژی را بیشنهاد می کنید؟
    این همه شما توضیحات قشنگ دادی ولی هنوز یه چیز حل نشده ! هنوز صورت مسئله حل نشده !
    من اگر هیچ چیز هم از جاوا نفهمم میتونم این رو بفهمم که الان به یه تناقض (هر چند کوچک و هرچند فقط در ذهن من) بوجود آمده . همین مسایل هست که آدم رو میکشونه به سمت یادگیری بیشتر . شاید اگه شما جای من بودی و چنین تناقضی رو میدیدی (هر چند کوچک) به چشمات شک میکردی و به جای طرح این سوال توی فروم مثلا میرفتی چشم پزشکی ! بالاخره
    احتمال وجود باگ توی چشم شما بیشتره تا وجود باگ توی یه پروژه ی مهندسی آمریکایی!!!!

    چقدر خوب میشد قبل از هر حرفی یادمون نره که بالاخره مساله قراره تهش حل بشه !!! نیومدیم که بحث و جدل کنیم !
    و هر بچه ای هم میفهمه مجهول مساله چیه الان .
    اگه فکر میکنید مجهول مساله قابل حله بسم الله ! این گوی و این میدان !

  7. #7
    نقل قول نوشته شده توسط unix_svr4 مشاهده تاپیک
    دوست عزیز vahid18u
    جاوا خیلی وقته که امتحانش رو در مورد مستقل بودن از پلاتفرم پس داده! شما نمی توانید با یک مثال ساده اثبات کنید که جاوا Croos-Plarform نیست!
    شاید jvm شما باگ دارد. الان آخرین نسخه Java 6 Update 6 است؟ شما با کدام نسخه برنامه را اجرا می کنید؟؟؟
    بهر حال هیچوقت تصمیم نگیرید. برنامه خود را Trace و Debug کنید، شاید واقعا برنامه شما یک مشکل منطقی دارد.

    موفق باشید.
    بسیار خوب بنده در اسرع وقت برنامه ام رو روی جدیدترین runtime تست خواهم کرد . و نتیجه را اینجا اعلام خواهم کرد .

  8. #8
    نقل قول نوشته شده توسط fkohantorabi مشاهده تاپیک
    هنوز می توانی یک اشتباهی چیزی کرده باشی. خواستی برنامت رو بفرست من وقت کردم بهش یک نگاه می کنم.


    فرزاد-
    مرسی از لطف شما . بعد از تست کردن روی جدیدترین runtime این کار را خواهم کرد .
    متشکرم

  9. #9
    Portable بودن جاوا یعنی اینکه که برنامه نوشته شده در تمام ماشینهای مجازی جاوا قابلیت اجرا داشته باشد. این معنی را نمیدهد که پروسه اجرا هم دقیقا در آنها یکی باشد.

    یک مثال:

    شما در لینوکس ممکن است X داشته باشید یا نداشته باشید. خب به الطبع جاوا در محیطی که X ندارد قابلیت اجرای برنامه گرافیکی را ندارد. که این به معنی غیر قابل انتقال بودن جاوا نیست. مثل این است که کامیپوتر شما به شبکه اینترنت وصل نباشد و از جاوا انتظار داشته باشید فایلی را دانلود کنید.


    قرار هم نیست همه ماشینهای مجازی توسط سان تولید شوند. مثلا سان در خصوص موبایلها (ممکن از از سان بخواهند تولید کند اما ...) ماشین مجازی ارائه میکند؟ جواب نه. فقط استاندارد مشخص شده طبق آن است.



    البته قابلیت انتقال جاوا همه گیر نیست مثلا در خصوص JNI.

    یا اینکه کلا اینطور نیست که جاوا مستقل از سیستم عامل و ماشین باشد. در واقع ماشین مجازی جاوا یک مفسر است. مثل اینکه شما در پیتون کدی را بنویسید و کلا کد را در تمام سیستم عاملها اجرا کنید.
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  10. #10
    در مستندات جاوا ذکر شده است که کامپایلر جاوا برای بالا بردن سرعت پردازش، بر روی برخی از کد ها که نیازی به بایت کد کردن آنها نیست دقیقآ عمل کامپایل را منطبق بر دستورات ماشین native بر روی آنها انجام میدهد تا بدون تفسیر توسط ماشین مجازی مستقیمآ بر روی سیستم عامل قابل اجرا باشد . از جمله این کدها میتوان به کدهایی که شامل عملیات arithmetic است اشاره کرد که احتمالآ برنامه شما نیز در حال استفاده از این نوع کدها می باشد.
    احتمال می رود که کد شما دارای باگهایی باشد که بدلیل robust بودن و بالا بودن آستانه تحمل سیستم عاملهای خانوده UNIX و LINUX در مقابل باگها، بر روی این گونه پلاتفرمها آشکار نشود و بلعکس برروی XP که سیستم عامل ضعیفی در مقابل باگها است، خود را نشان دهد.
    بنا براین بهتر است بجای متهم کردن جاوا به غیر پرتابل بودن، همانطور که دوستان دیگر اشاره کردند سورس برنامه خودتان برای بررسی در فروم قرار دهید تا مشکل شما بصورت دقیقتری توسط دیگران مورد بررسی قرار گیرد.

  11. #11
    لینک دانلود کلاسها و سورس ها و فایل .jar :

    http://www.2shared.com/file/3204406/...va_sample.html
    ------------------------------------------------------------------------------------------

    سورس برنامه :

    /*
    * Sort_algorithm.java
    *
    * Created on April 17, 2008, 11:23 PM
    *
    */
    import java.util.Random;
    import java.io.*;


    class Sort_algorithm{
    private int input_array[];
    private int size;
    private int Insertion[];
    private int merge[];
    private int quick[];
    private int bubble[];
    private int temp[];
    private long start_bubble;
    private long start_merge;
    private long start_Insertion;
    private long start_quick;
    private long end_bubble;
    private long end_merge;
    private long end_Insertion;
    private long end_quick;
    Sort_algorithm(int s){
    size=s;
    input_array=new int[size];
    bubble=new int[size];
    Insertion=new int[size];
    quick=new int[size];
    merge=new int[size];
    temp=new int [size];

    }
    void input_data(){
    Random randomNumbers=new Random();
    int number;
    for(int counter=0;counter<size;counter++)
    {
    number=1+randomNumbers.nextInt(5000);
    input_array[counter]=number;

    bubble[counter]=number;
    Insertion[counter]=number;
    quick[counter]=number;
    merge[counter]=number;


    }
    }//input
    void bubble_sort(){
    int i,j,temp;

    start_bubble=System.currentTimeMillis();
    //bubble sort algorithm starts from here
    for(i=0;i<size;i++)
    {
    for(j=0;j<i;j++)
    {
    if (bubble[i]<bubble[j]){
    temp=bubble[i];
    bubble[i]=bubble[j];
    bubble[j]=temp;
    }
    }
    }
    System.out.println("Bubble sort was successfully done.\n");
    //bubble sort algorithm finishs here




    end_bubble=System.currentTimeMillis();
    }


    void Insertion_sort(){
    int i,j,current;

    start_Insertion=System.currentTimeMillis();
    //Insertion sort algorithm starts from here
    for(j=1;j<size;j++)
    {
    current=Insertion[j];
    i=j-1;
    while ((i>=0) &&(Insertion[i]>current) )
    {
    Insertion[i+1]=Insertion[i];
    i--;
    }//while
    Insertion[i+1]=current;

    }

    System.out.println("Insertion sort was successfully done.\n");
    //Insertion sort algorithm finishs here
    end_Insertion=System.currentTimeMillis();
    }

    void write_in_file1(){
    String s="random input data: ";
    FileOutputStream f0;
    try
    {
    f0=new FileOutputStream ("random_input.txt");
    for(int i=0;i<size;i++){
    s=s+input_array[i];
    s=s+", ";
    }
    new PrintStream(f0).println (s);
    System.out.println("\nrandom input data were stored to random_input.txt\n");
    f0.close();
    }
    catch (IOException e)
    {
    System.err.println ("Unable to write to file random_input.txt\n");
    System.exit(-1);
    }


    }//write_in_file1
    void write_result(){

    System.out.print("\nPLEASE WAIT while program writes the results to result.txt\n");
    FileOutputStream f1;
    try
    {
    f1=new FileOutputStream ("result.txt");

    String s="Results: \n"
    +"bubble sort run time : "+(end_bubble-start_bubble)+" ms\n"
    +"Insertion sort run time : "+(end_Insertion-start_Insertion)+" ms\n"
    +"Merge sort run time : "+(end_merge-start_merge)+" ms\n"
    +"Quick sort run time : "+(end_quick-start_quick)+" ms\n"
    +"--------------------\n"
    +"bubble sort result: \n";
    for(int i=0;i<size;i++){
    s=s+bubble[i];
    s=s+", ";}
    s=s+"\nalgorithm run time : "
    +(end_bubble-start_bubble)+" ms\n--------------------\n";
    new PrintStream(f1).println (s);

    s="Insertion sort result: \n";
    for(int i=0;i<size;i++){
    s=s+Insertion[i];
    s=s+", ";}
    s=s+"\nalgorithm run time : "
    +(end_Insertion-start_Insertion)+" ms\n--------------------\n";
    new PrintStream(f1).println (s);


    s="Merge sort result: \n";
    for(int i=0;i<size;i++){
    s=s+merge[i];
    s=s+", ";}
    s=s+"\nalgorithm run time : "
    +(end_merge-start_merge)+" ms\n--------------------\n";
    new PrintStream(f1).println (s);

    s="Quick sort result: \n";
    for(int i=0;i<size;i++){
    s=s+quick[i];
    s=s+", ";}
    s=s+"\nalgorithm run time : "
    +(end_quick-start_quick)+" ms\n--------------------\n";
    new PrintStream(f1).println (s);


    f1.close();
    }//try

    catch (IOException e)
    {
    System.err.println ("Unable to write to file result.txt");
    System.exit(-1);
    }

    }

    //////////////////////////////////////////////////////////////
    public void Merge_sort()
    {
    start_merge=System.currentTimeMillis();
    //merge sort algorithm starts from here
    sortArray( 0, size-1 ); // split entire array
    System.out.println("merge sort was successfully done.\n");
    //merge sort algorithm finishs here
    end_merge=System.currentTimeMillis();


    } // end method sort

    private void sortArray( int low, int high )
    {
    // test base case; size of array equals 1
    if ( ( high - low ) >= 1 ) // if not base case
    {
    int middle1 = ( low + high ) / 2; // calculate middle of array
    int middle2 = middle1 + 1; // calculate next element over


    // split array in half; sort each half (recursive calls)
    sortArray( low, middle1 ); // first half of array
    sortArray( middle2, high ); // second half of array

    // merge two sorted arrays after split calls return
    merge_it ( low, middle1, middle2, high );
    } // end if
    } // end method split

    // merge two sorted subarrays into one sorted subarray


    private void merge_it( int left, int middle1, int middle2, int right )
    {
    int leftIndex = left; // index into left subarray
    int rightIndex = middle2; // index into right subarray
    int combinedIndex = left; // index into temporary working array
    int[] combined = new int[ size ]; // working array

    // merge arrays until reaching end of either
    while ( leftIndex <= middle1 && rightIndex <= right )
    {
    // place smaller of two current elements into result
    // and move to next space in arrays
    if ( merge[ leftIndex ] <= merge[ rightIndex ] )
    combined[ combinedIndex++ ] = merge[ leftIndex++ ];
    else
    combined[ combinedIndex++ ] = merge[ rightIndex++ ];
    } // end while

    // if left array is empty
    if ( leftIndex == middle2 )
    // copy in rest of right array
    while ( rightIndex <= right )
    combined[ combinedIndex++ ] = merge[ rightIndex++ ];
    else // right array is empty
    // copy in rest of left array
    while ( leftIndex <= middle1 )
    combined[ combinedIndex++ ] = merge[ leftIndex++ ];

    // copy values back into original array
    for ( int i = left; i <= right; i++ )
    merge[ i ] = combined[ i ];

    } // end method merge

    // method to output certain values in array


    void Quick_sort()
    {
    start_quick=System.currentTimeMillis();
    //quick sort algorithm starts from here
    qsort(0, size-1);
    System.out.println("quick sort was successfully done.\n");
    //quick sort algorithm finishs here
    end_quick=System.currentTimeMillis();

    }

    public void qsort(int low, int high)
    {
    if (low >= high) return;
    int p = partition(low, high);
    qsort(low, p);
    qsort(p + 1, high);
    }

    private int partition(int low, int high)
    {
    // First element
    int pivot = quick[low];

    // Middle element
    //int middle = (low + high) / 2;
    //int pivot = a[middle];
    int temp;
    int i = low - 1;
    int j = high + 1;
    while (i < j)
    {
    i++; while (quick[i] < pivot) i++;
    j--; while (quick[j] > pivot) j--;
    if (i < j)
    {
    temp=quick[i];
    quick[i]=quick[j];
    quick[j]=temp;
    }
    }
    return j;
    }


    }//Sort_algorithm

    /*
    * sortclass.java
    *
    * Created on April 17, 2008, 11:21 PM
    *
    */
    import java.util.Scanner;
    public class sortclass {
    private int arrays[];

    public static void main(String args[]){
    Scanner input=new Scanner(System.in);
    int size;
    System.out.print("Enter the size of input array : ");
    size=input.nextInt();
    Sort_algorithm sort_algorithm=new Sort_algorithm(size);
    sort_algorithm.input_data();
    sort_algorithm.write_in_file1();
    sort_algorithm.bubble_sort();
    sort_algorithm.Insertion_sort();
    sort_algorithm.Merge_sort();
    sort_algorithm.Quick_sort();
    sort_algorithm.write_result();
    }

    }




    ----------------------------------------------------------------
    این برنامه اولش یه عدد میگیره معادل طول آرایه ای که میخواد سورت کنه . مثلا بدید 3000
    بعد به صورت راندوم عدد میریزه توش و عدد ها رو میریزه توی فایلی به نام random_input.txt در کنار فایل اجرایی .

    نمونه ی فایل random_input.txt :

    random input data: 1695, 3496, 3614, 3706, 4535, 2861, 4563, 2141, 2663, 3396, 4643, 264, 4501, 4095, 4679, 4121, 4948, 4300, 239, 2882, 4793, 2251, 3473, 3760, 4724, 1967, 1795, 469, 381, 1970, 2669, 3369, 1288, 1016, 4734, 2500, 1999, 838, 4041, 3302, 971, 955, 2179, 1295, 631, 2140, 1964, 3706, 177, 2190, 1664, 1380, 3357, 732, 4521, 2803, 1223, 1865, 2275, 3073, 37, 2975, 3756, 4152, 2327, 3054, 1861, 3911, 500, 1992, 3881, 3274, 4130, 841, 993, 4665, 2937, 2579, 1385, 4543, 1765, 1288, 2515, 4434, 1503, 41, 4358, 354, 3695, 4891, 906, 2442, 1743, 2193, 4411, 516, 4359, 4940, 168, 1009, 1024, 112, 2567, 710, 4343, 216, 1942, 3234, 4521, 4002, 4312, 684, 3661, 4500, 4363, 4913, 4427, 2198, 330, 1179, 4719, 1953, 1340, 3157, 1929, 645, 1112, 4930, 4236, 2000, 4394, 4038, 2625, 2530, 191, 4172, 2879, 174, 4353, 839, 2001, 2395, 1671, 2956, 1189, 689, 4156, 1068, 4660, 2318, 2947, 3840,
    بعد 4 الگوریتم مختلف سورت رو روش انجام میده و زمان اجرای هر کدوم رو هم میگیره . بعد نتایج سورت ها و زمان ها رو میریزه توی فایلی به اسم result.txt

    نمونه ی فایل result.txt :

    Results:

    bubble sort run time : 401 ms
    Insertion sort run time : 117 ms
    Merge sort run time : 548 ms
    Quick sort run time : 16 ms
    --------------------
    bubble sort result:
    1, 1, 1, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5, 7, 8, 8, 8, 8, 9, 9, 10, 11, 12, 12, 13, 15, 16, 16, 17, 18, 19, 19, 19, 19, 21, 21, 22, 22, 23, 23, 23, 23, 24, 25, 25, 28, 29, 29, 29, 29, 29, 30, 30, 31, 31, 32, 32, 33, 33, 35, 35, 37, 37, 37, 37, 37, 38, 39, 39, 39, 39, 39, 40, 40, 41, 41, 41, 41, 41, 43, 43, 43, 44, 44, 44, 45, 45, 46, 46, 48, 48, 50, 51, 51, 51, 51, 51, 51, 52, 52, 53, 53, 54, 54, 54, 55, 55, 57, 57, 57, 57, 58, 59, 59, 59, 59, 59, 59, 59, 59, 59, 61, 61, 62, 65, 65, 65, 65, 66, 67, 67, 68, 68, 69, 69, 69, 70, 70, 71, 72, 72, 72, 73, 74, 74, 74, 75, 75, 75, 76, 76, 76, 76, 78, 79, 79, 79, 79, 79, 80, 80, 80, 80, 81, 81, 83, 84, 84, 84, 85, 85, 86, 87, 87, 87..........
    ---------------------------
    و ما مشکل کار اینجاست که توی ویندوز xp نتیجه ی quick sort همواره صفره .

    اگر توی xp یا vista خواستید نتیجه ی text رو ببینید ترجیحا با wordpad ببینید نه notepad .

    محیط اجراش هم توی خط فرمان فقط .

  12. #12
    نقل قول نوشته شده توسط rezaTavak مشاهده تاپیک
    Portable بودن جاوا یعنی اینکه که برنامه نوشته شده در تمام ماشینهای مجازی جاوا قابلیت اجرا داشته باشد. این معنی را نمیدهد که پروسه اجرا هم دقیقا در آنها یکی باشد.

    یک مثال:

    شما در لینوکس ممکن است X داشته باشید یا نداشته باشید. خب به الطبع جاوا در محیطی که X ندارد قابلیت اجرای برنامه گرافیکی را ندارد. که این به معنی غیر قابل انتقال بودن جاوا نیست. مثل این است که کامیپوتر شما به شبکه اینترنت وصل نباشد و از جاوا انتظار داشته باشید فایلی را دانلود کنید.


    قرار هم نیست همه ماشینهای مجازی توسط سان تولید شوند. مثلا سان در خصوص موبایلها (ممکن از از سان بخواهند تولید کند اما ...) ماشین مجازی ارائه میکند؟ جواب نه. فقط استاندارد مشخص شده طبق آن است.



    البته قابلیت انتقال جاوا همه گیر نیست مثلا در خصوص JNI.

    یا اینکه کلا اینطور نیست که جاوا مستقل از سیستم عامل و ماشین باشد. در واقع ماشین مجازی جاوا یک مفسر است. مثل اینکه شما در پیتون کدی را بنویسید و کلا کد را در تمام سیستم عاملها اجرا کنید.
    از توضیحاتتون کمال تشکر رو دارم . اگر امکانش بود و فرصت کردید یه نگاه به سورس برنامه ام بندازید ببینید این عامل چی میتونه باشه .

  13. #13
    نقل قول نوشته شده توسط kobari مشاهده تاپیک
    در مستندات جاوا ذکر شده است که کامپایلر جاوا برای بالا بردن سرعت پردازش، بر روی برخی از کد ها که نیازی به بایت کد کردن آنها نیست دقیقآ عمل کامپایل را منطبق بر دستورات ماشین native بر روی آنها انجام میدهد تا بدون تفسیر توسط ماشین مجازی مستقیمآ بر روی سیستم عامل قابل اجرا باشد . از جمله این کدها میتوان به کدهایی که شامل عملیات arithmetic است اشاره کرد که احتمالآ برنامه شما نیز در حال استفاده از این نوع کدها می باشد.
    احتمال می رود که کد شما دارای باگهایی باشد که بدلیل robust بودن و بالا بودن آستانه تحمل سیستم عاملهای خانوده UNIX و LINUX در مقابل باگها، بر روی این گونه پلاتفرمها آشکار نشود و بلعکس برروی XP که سیستم عامل ضعیفی در مقابل باگها است، خود را نشان دهد.
    بنا براین بهتر است بجای متهم کردن جاوا به غیر پرتابل بودن، همانطور که دوستان دیگر اشاره کردند سورس برنامه خودتان برای بررسی در فروم قرار دهید تا مشکل شما بصورت دقیقتری توسط دیگران مورد بررسی قرار گیرد.

    مرسی از توضیحاتتون . اگر فرصت کردید شما هم نگاهی به کد هام بندازید . متشکرم

  14. #14
    نقل قول نوشته شده توسط vahid18u مشاهده تاپیک

    مرسی از توضیحاتتون . اگر فرصت کردید شما هم نگاهی به کد هام بندازید . متشکرم
    من رو دستگاه خودم اجراش کردم و quicksort در 10 میلی ثانیه انجام شد. دستگاه من تک cpu هستش و از جاوا 1.6.0 استفاده می کنم. در ضمن سیستم عامل ویندوز xp هستش.



    فرزاد-

  15. #15
    نقل قول نوشته شده توسط fkohantorabi مشاهده تاپیک
    من رو دستگاه خودم اجراش کردم و quicksort در 10 میلی ثانیه انجام شد. دستگاه من تک cpu هستش و از جاوا 1.6.0 استفاده می کنم. در ضمن سیستم عامل ویندوز xp هستش.



    فرزاد-
    جدی میگی ؟ wow مسئله داره پیچیده میشه ! من روی 2 تا xp تست کردم 0 شد .
    به هر حال متشکرم دوست عزیز . من روی xp های دیگری هم تست میکنم ببینم مشکل چیه .
    تشکر از توجهتون

  16. #16
    نقل قول نوشته شده توسط kobari مشاهده تاپیک
    در مستندات جاوا ذکر شده است که کامپایلر جاوا برای بالا بردن سرعت پردازش، بر روی برخی از کد ها که نیازی به بایت کد کردن آنها نیست دقیقآ عمل کامپایل را منطبق بر دستورات ماشین native بر روی آنها انجام میدهد تا بدون تفسیر توسط ماشین مجازی مستقیمآ بر روی سیستم عامل قابل اجرا باشد .
    با عرض پوزش من باید بخش اول جمله ام را بشکل زیر تصحیح کنم:
    در مستندات جاوا ذکر شده است که هرچند برنامه های جاوا به بایت کت تبدیل میشوند اما پلاتفرم جاوا برای بالا بردن سرعت پردازش تمامآ از بایت کد تشکیل نشده است و بخشهایی از آن که در ارتباط با محاسبات است از کد ماشین native تشکیل شده است . تا از این طریق برنامه های در حال اجرا با سرعت بلایی اجرا شوند . متدهایی نیز که رشته کاراکترها را manipulate میکنند از این جمله اند .

    تست اولیه برنامه برروی دستگاه من با سیستم XP و java 1.6.0.3 برای یک آرایه 10000 تایی نتیجه زیر را حاصل کرد
    Quick sort run time : 0 ms

  17. #17
    نقل قول نوشته شده توسط vahid18u مشاهده تاپیک
    جدی میگی ؟ wow مسئله داره پیچیده میشه ! من روی 2 تا xp تست کردم 0 شد .
    به هر حال متشکرم دوست عزیز . من روی xp های دیگری هم تست میکنم ببینم مشکل چیه .
    تشکر از توجهتون
    یک تستی می توانی بکنی اینه که وقتی می پرسه سایز ورودی چقدر بری توی task manager و affinity پروسس جاوا را بزاری روی یک cpu و ببینی آیا فرقی میکنه یا نه. سیستم عاملهای مختلف می توانند کاملا سیاست متفاوتی نسبت به اینکه چگونه cpu رو بین پروسس ها تقسیم کنند دارند.


    فرزاد-

  18. #18
    نقل قول نوشته شده توسط kobari مشاهده تاپیک
    با عرض پوزش من باید بخش اول جمله ام را بشکل زیر تصحیح کنم:
    در مستندات جاوا ذکر شده است که هرچند برنامه های جاوا به بایت کت تبدیل میشوند اما پلاتفرم جاوا برای بالا بردن سرعت پردازش تمامآ از بایت کد تشکیل نشده است و بخشهایی از آن که در ارتباط با محاسبات است از کد ماشین native تشکیل شده است . تا از این طریق برنامه های در حال اجرا با سرعت بلایی اجرا شوند . متدهایی نیز که رشته کاراکترها را manipulate میکنند از این جمله اند .

    تست اولیه برنامه برروی دستگاه من با سیستم XP و java 1.6.0.3 برای یک آرایه 10000 تایی نتیجه زیر را حاصل کرد
    Quick sort run time : 0 ms
    ممنون از توضیحاتتون دوست گرامی . و متشکر از این که برنامه رو تست کردید .

    خوب این دوستمون اجرا کرده برنامه رو و نتیجه همون بود که گفتم . حالا دو تا مورد داریم که هردو روی XP هستن و نتایج متفاوته . دوستان حرفه ای کمک کنن . مشکل کجاست ؟

  19. #19
    نقل قول نوشته شده توسط fkohantorabi مشاهده تاپیک
    یک تستی می توانی بکنی اینه که وقتی می پرسه سایز ورودی چقدر بری توی task manager و affinity پروسس جاوا را بزاری روی یک cpu و ببینی آیا فرقی میکنه یا نه. سیستم عاملهای مختلف می توانند کاملا سیاست متفاوتی نسبت به اینکه چگونه cpu رو بین پروسس ها تقسیم کنند دارند.
    فرزاد-
    فکر جالبیه . من الان xp ندارم . بعدا تست میکنم .

  20. #20
    نقل قول نوشته شده توسط vahid18u مشاهده تاپیک
    فکر جالبیه . من الان xp ندارم . بعدا تست میکنم .
    من حرفم رو پس می گیرم. من به سورس برنامه هنوز نگاه نکرده بودم و الان که نگاه کردم این مساله نباید تصیری داشته باشه.


    فرزاد-

  21. #21
    نقل قول نوشته شده توسط vahid18u مشاهده تاپیک
    فکر جالبیه . من الان xp ندارم . بعدا تست میکنم .
    من یک مقدار برنامه رو دیباگ کردم و بنظر میاد که از جهتی که الگوریتم quicksort از هیچ لوپی استفاده نمی کند و فقط از call stack استفاده می کند دارای سرعت متفاوت روی osهای مختلف داشته باشد. من دقیقا نمی دونم که چقدر jvm برای اینجور چیزها از توانایی های os استفاده می کند ولی دور از ذهن هم نمیدونم اگر کمی ارتباط این وسط وجود داشته باشد. کاربرهای دیگه که در مورد ساختار jvm و ارتباطش با os بیشتر می دونند شاید بهتر باشه که در این مورد نظر بدن.

    در ضمن من این برنامه رو روی یک کامپیوتر بهتر اجرا کردم و با ورودی 3000تایی همون جواب 0 رو گرفتم ولی با ورودی 20000تایی دیگه مدت زمان صفر نبود که تا همین جا برنامه تست sanity رو پاس می کنه. در ضمن هم زیاد هم دور از ذهن نیست که Vista کلا ساختار خیلی مهکمی نداشته باشه ولی چون من اصولا یک رب بیشتر با ویستا کار نکردم سعی میکنم که زیاد حرف نزنم.


    فرزاد-

  22. #22
    نقل قول نوشته شده توسط fkohantorabi مشاهده تاپیک
    من یک مقدار برنامه رو دیباگ کردم و بنظر میاد که از جهتی که الگوریتم quicksort از هیچ لوپی استفاده نمی کند و فقط از call stack استفاده می کند دارای سرعت متفاوت روی osهای مختلف داشته باشد. من دقیقا نمی دونم که چقدر jvm برای اینجور چیزها از توانایی های os استفاده می کند ولی دور از ذهن هم نمیدونم اگر کمی ارتباط این وسط وجود داشته باشد. کاربرهای دیگه که در مورد ساختار jvm و ارتباطش با os بیشتر می دونند شاید بهتر باشه که در این مورد نظر بدن.

    در ضمن من این برنامه رو روی یک کامپیوتر بهتر اجرا کردم و با ورودی 3000تایی همون جواب 0 رو گرفتم ولی با ورودی 20000تایی دیگه مدت زمان صفر نبود که تا همین جا برنامه تست sanity رو پاس می کنه. در ضمن هم زیاد هم دور از ذهن نیست که Vista کلا ساختار خیلی مهکمی نداشته باشه ولی چون من اصولا یک رب بیشتر با ویستا کار نکردم سعی میکنم که زیاد حرف نزنم.


    فرزاد-
    تشکر مجدد از شما . راست به نظر من اگه 20000 بار یه متد خالی از کد هم صدا زده بشه بیشتر از 1ms باید طول بکشه ! ولی خوب واقعا خیلی باید عجیب باشه که این quick sort اینقدر سریع نسبت به بقیه توی جاوا run میشه .

  23. #23
    دقت کنید جاوا بدون خطا در هر سیستمی کار میکند اصل بر نتیجه است اگر اینطوری نبود بسیاری از چیزها در جاوا نبود مثلا :


    File f = new File("a");
    System.out.println(f.separator);
    در یونیکس / و در ویندوز \\ جواب میدهد. یا :

    f.pathSeparator
    در یونیکس : و در ویندوز ; است!



    پس من هم چه نتیجه‌ای بگیرم؟


    یا این لینک:
    http://java.sun.com/javase/6/docs/jr...nixSystem.html
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  24. #24
    سلام به همهگی!
    من تست کردم با ورودی : 20000 نتیجه :
    Results:
    bubble sort run time : 1331 ms
    Insertion sort run time : 571 ms
    Merge sort run time : 5268 ms
    Quick sort run time : 10 ms
    ویندوز من -JDK6-XP SP2 Last FullUpdate jun2008
    با توجه به موارد بالا :
    1- ممکنه سیستم وCPU یکی از سورت هارو با توجه به قدرتشون و روش Native پیاده سازی در پلت فرم و همچنین الویت بندی خود CPU با سرعت بیشتری انجام بدن.یعنی در کسری از میلی ثانیه.پروفایلر من هم نمیتونه کسر کمتر از این رو رد یابی کنه.(جالبه بدونید پروفایلر برای Quick sort عدد 12 رو نشون میداد!)
    2-من تا حالا در سیستم های چند هسته ای Performance Tuning نکردم ولی بعید نیست که پیاده سازی System.CurentTime.. در ویندوز با توجه به Atomic بودن جاوا برای خودش - ویندوز برای خودش و Cpu برای خودش با اخلال مواجه شده! یا مثلا پردازنده هایی که 64 بیت بودن رو تقلید میکنن.!این برای سیستم هایی که از همون ابتدا با تفکر چند پردازشگری مثل linux هستن و ورژن های عادیشون تا 32 CPU رو پشتیبانی میکنن قدر مسلم کمتر پیش میاد!
    3-طبق استاندارد برنامه شما در همه پلت فرم ها باید اجرا شه!اما مستقل از پلات فرم بودن به این معنی نیست که همه چیز یک جور به نظر بیاد!
    مثال ها : UI>در هر سیستم عاملی یه جور نمایش داده میشه.شکل و کارایی متفاوت! IO> در javaEE > هر شرکتی که EE رو پیاده کرده یه شکل نحوه اختصاصی برای دیپلوی نهایی داره.کد ها و روش برنامه یکسان هستن ولی در نهایت این مثلا Jrun.xml-Jboss.xml و غیره هستن که برنامه EE شما رو به کانتینر اون شرکت معرفی میکنه!

    4-در دنیای واقعی تا الان Write onse ,run anywhere و نه Write onse ,Deploy anywhere به شکل ایده ال عملی نشدن.اما پیشرفت ها عالی بوده!و واقعا در هزینه ها در توسعه برنامه برای سیستم های مختلف با همین ایده کم شده .
    با تشکر.
    یک بار و برای همیشه می خواهم چیزهای زیادی ندانم.فرزانگی نیز برای شناخت , محدودیت می آفریند .(پندها وپیکان ها – فردریش نیچه)

  25. #25
    سلام

    این احتمال رو هم در نظر بگیرید زمان مرتب سازی آنقدر کوچک هست که به سمت صفر میل می کند .

  26. #26
    نقل قول نوشته شده توسط mazdadoost مشاهده تاپیک
    سلام به همهگی!
    من تست کردم با ورودی : 20000 نتیجه :
    Results:
    bubble sort run time : 1331 ms
    Insertion sort run time : 571 ms
    Merge sort run time : 5268 ms
    Quick sort run time : 10 ms
    ویندوز من -JDK6-XP SP2 Last FullUpdate jun2008
    با توجه به موارد بالا :
    1- ممکنه سیستم وCPU یکی از سورت هارو با توجه به قدرتشون و روش Native پیاده سازی در پلت فرم و همچنین الویت بندی خود CPU با سرعت بیشتری انجام بدن.یعنی در کسری از میلی ثانیه.پروفایلر من هم نمیتونه کسر کمتر از این رو رد یابی کنه.(جالبه بدونید پروفایلر برای Quick sort عدد 12 رو نشون میداد!)
    2-من تا حالا در سیستم های چند هسته ای Performance Tuning نکردم ولی بعید نیست که پیاده سازی System.CurentTime.. در ویندوز با توجه به Atomic بودن جاوا برای خودش - ویندوز برای خودش و Cpu برای خودش با اخلال مواجه شده! یا مثلا پردازنده هایی که 64 بیت بودن رو تقلید میکنن.!این برای سیستم هایی که از همون ابتدا با تفکر چند پردازشگری مثل linux هستن و ورژن های عادیشون تا 32 CPU رو پشتیبانی میکنن قدر مسلم کمتر پیش میاد!
    3-طبق استاندارد برنامه شما در همه پلت فرم ها باید اجرا شه!اما مستقل از پلات فرم بودن به این معنی نیست که همه چیز یک جور به نظر بیاد!
    مثال ها : UI>در هر سیستم عاملی یه جور نمایش داده میشه.شکل و کارایی متفاوت! IO> در javaEE > هر شرکتی که EE رو پیاده کرده یه شکل نحوه اختصاصی برای دیپلوی نهایی داره.کد ها و روش برنامه یکسان هستن ولی در نهایت این مثلا Jrun.xml-Jboss.xml و غیره هستن که برنامه EE شما رو به کانتینر اون شرکت معرفی میکنه!

    4-در دنیای واقعی تا الان Write onse ,run anywhere و نه Write onse ,Deploy anywhere به شکل ایده ال عملی نشدن.اما پیشرفت ها عالی بوده!و واقعا در هزینه ها در توسعه برنامه برای سیستم های مختلف با همین ایده کم شده .
    با تشکر.
    مرسی ازتوضیحات کاملتون . ولی آیا میشه گفت که با توجه به مورد ۳ شما میشه نتیجه گرفت که روی برخی سیستم ها صفر شدن زمان اجرای quick sort برای حتی تعداد داده های بالا همچنان مورد ۳ قابل توجیه نیست ؟

  27. #27
    دوست من :
    چرا که نه.چنانچه هر مشکل نرم افزاری در هر سطحی معرف نوعی اخلال در برنامه و شکل صحیح اجراش در عمل باشه مثلا اینکه در یک برنامه با ماموریت کنترل منابع بحرانی مثل برنامه های اتوماسیون صنعتی .مسئله زمانبندی سیستم به شدت حیاتیه.در صورتی که برنامه به جاوا نوشته شه, انتظار داریم برنامه در تمام سیستم های کارخونه به ما زمان انجام شدن یه پروسه مثلا ترکیب دو ماده و ایجاد محصول رو بده!اگه این زمان ها برای یک سیستم لینوکس با یه سخت افزار و سیستم ویندوز با یک سخت افزار مقادیر متفاوتی از یک منبع (برای مثال یه تراشه PLC که به
    یک کوارتز وصل شده بدن عملا سیستم قابلیت اعتمادشو از دست میده.چنین سناریویی بسیار محتمل و البته متداوله!در مورد برنامه شما بنده فقط برنامرو تست و پروفایل کردم.و همونطور که دیدید برای 20000 ورددی عدد 10 میلی ثانیه بدست اومد.تا همین الان هم این برنامه مقداری رو برای الگوریتم آخری گزارش میده.
    و این یعنی
    JRE
    من در این زمینه باگی نداره.حالا بیاین به این مسئله توجه کنیم که آیا در پلت فرمی مثل دات نت که قراره در همه ویندوز هایی که ازش پشتیبانی میکنن به یه شکل اجرا بشه وضعیت به شچه شکله.یه تست کوچک برای لود کردن یه یک دیتاست در حافظه در دو سیستم متفاوت دو عدد متفاوت در دو سیستم جداگانه زمان های متفاوتی رو میده.نکته جالب اینکه با دو بار فراخانی همین متد در فواصل معین در همون سیستم باز هم زمان های مختلف حتی اختلاف های فاحش داره.از طرفی همونطور که گفتم دات نت هم به عنوان یه Runtime
    قراره در سیستم های مختلف مایکروسافت یه کاربرد و یک تجربه رو ایجاد کنه مثل جاوا.با این تفاوت که جاوا این کارو با مقیاس بزرگتری انجام میده.بذارید اینطور نتیجه گیری کنم :
    1-تنها عاملی که میتونه منجر به اشکالی در برنامه بشه باگه!چنانچه در سیستم من و شما این الگوریتم آخر به هیچ عنوان زمانی رو برای اجرا گزارش نکنه مطمعنا با یه باگ عمومی مواجهیم.همینطور اگه در سیستم من به هر حال عددی بده و برای شما به هر حال نه در اینجا میتونیم بگیم این مسئله مربوط به سیستم شماست.و اینکه احتمالا چیزی در اون سیستم با مشکل مواجهه.در هر صورت باگ وخطا در هر سیستم نرم افزاری و حتی سخت افزاری مخصوصا اگه پیچیده باشه امری مرسوم و متداول!باگ شاخ و دم نداره که.شما در همین مثال شاید با یه باگ مواجه شدین که در شرایط خاصی باعث میشه الگوریتم آخر اصلا برای اجراش زمانی گزارش نکنه!همه سیستم ها لینوکس ویندوز و نرم افزار های مربوطشون تحت شرایطی چنین باگ هایی رو گزارش می کنن.یا با مشکلاتی مواجه میشن.این یه مثال سادست.ما در پروژه های عملیمون باگهایی به مراتب یاس آورتر رو تجربه کردیم!چه در جاوا چه در دات نت.
    2-همونطور که عرض کردم مسائلی مثل زمان مصرفی برای یه متد یا در کل یه آلگوریتم در سیستم های متفاوت و روش های متفاوت امری فی نفسه وابسته به سیستم شامل سیستم عامل-سخت افزار I/O
    و...خوب اینکه فهمیدن چنین امری چقدر میتونه برای یه برنامه جاوا مهم باشه فقط برای بهینه سازی و افزایش کارایی برنامست.مثل مثالی که برای اتوماسیون صنعتی گفتم اهمیت نداره!
    3-حالا برمیگردیم به استقلال از پلت فرم!گفتم که این مسئله یه ایده آل هست.برای مثال آلگوریت های سورت کردن آرایه ها یا Vector
    ها در پیاده سازی های مختلف کارایی های مختلفی دارن.استقلال برای پلت فرم یعتی شما در همه سیستم ها با این آلگوریتم ها به یک شکل کار کنید.یا اینکه امضای متد main
    در همه سیستم ها به چه شکلی باشه.استقلال از پلت فرم برای جاوا یعنی چه شکلی بودن.یعنی شکل واحد داشتن.نه یک چگونگی داشتن.و این فلسفه جاواست.همین مسئله به ما در درک این مسئله کمک میکه تا بفهمیم در کل این مثال اصولا از نظر منطقی مهمله!چرا که به چگونه بودن پیاده سازی جاوا مربوطه.نه به مشخصاتی که سان برای چه شکلی بودن جاوا در همه سیستم ها به یک شکل واحد وضع کرده.
    حالا
    IBM به روش خودش SUN یه جور و اراکل یه جور!
    امیدوارم مفید بوده باشه. وبا تشکر از لطف شما.
    یک بار و برای همیشه می خواهم چیزهای زیادی ندانم.فرزانگی نیز برای شناخت , محدودیت می آفریند .(پندها وپیکان ها – فردریش نیچه)

  28. #28
    نقل قول نوشته شده توسط mazdadoost مشاهده تاپیک
    دوست من :
    چرا که نه.چنانچه هر مشکل نرم افزاری در هر سطحی معرف نوعی اخلال در برنامه و شکل صحیح اجراش در عمل باشه مثلا اینکه در یک برنامه با ماموریت کنترل منابع بحرانی مثل برنامه های اتوماسیون صنعتی .مسئله زمانبندی سیستم به شدت حیاتیه.در صورتی که برنامه به جاوا نوشته شه, انتظار داریم برنامه در تمام سیستم های کارخونه به ما زمان انجام شدن یه پروسه مثلا ترکیب دو ماده و ایجاد محصول رو بده!اگه این زمان ها برای یک سیستم لینوکس با یه سخت افزار و سیستم ویندوز با یک سخت افزار مقادیر متفاوتی از یک منبع (برای مثال یه تراشه PLC که به
    یک کوارتز وصل شده بدن عملا سیستم قابلیت اعتمادشو از دست میده.چنین سناریویی بسیار محتمل و البته متداوله!در مورد برنامه شما بنده فقط برنامرو تست و پروفایل کردم.و همونطور که دیدید برای 20000 ورددی عدد 10 میلی ثانیه بدست اومد.تا همین الان هم این برنامه مقداری رو برای الگوریتم آخری گزارش میده.
    و این یعنی
    JRE
    من در این زمینه باگی نداره.حالا بیاین به این مسئله توجه کنیم که آیا در پلت فرمی مثل دات نت که قراره در همه ویندوز هایی که ازش پشتیبانی میکنن به یه شکل اجرا بشه وضعیت به شچه شکله.یه تست کوچک برای لود کردن یه یک دیتاست در حافظه در دو سیستم متفاوت دو عدد متفاوت در دو سیستم جداگانه زمان های متفاوتی رو میده.نکته جالب اینکه با دو بار فراخانی همین متد در فواصل معین در همون سیستم باز هم زمان های مختلف حتی اختلاف های فاحش داره.از طرفی همونطور که گفتم دات نت هم به عنوان یه Runtime
    قراره در سیستم های مختلف مایکروسافت یه کاربرد و یک تجربه رو ایجاد کنه مثل جاوا.با این تفاوت که جاوا این کارو با مقیاس بزرگتری انجام میده.بذارید اینطور نتیجه گیری کنم :
    1-تنها عاملی که میتونه منجر به اشکالی در برنامه بشه باگه!چنانچه در سیستم من و شما این الگوریتم آخر به هیچ عنوان زمانی رو برای اجرا گزارش نکنه مطمعنا با یه باگ عمومی مواجهیم.همینطور اگه در سیستم من به هر حال عددی بده و برای شما به هر حال نه در اینجا میتونیم بگیم این مسئله مربوط به سیستم شماست.و اینکه احتمالا چیزی در اون سیستم با مشکل مواجهه.در هر صورت باگ وخطا در هر سیستم نرم افزاری و حتی سخت افزاری مخصوصا اگه پیچیده باشه امری مرسوم و متداول!باگ شاخ و دم نداره که.شما در همین مثال شاید با یه باگ مواجه شدین که در شرایط خاصی باعث میشه الگوریتم آخر اصلا برای اجراش زمانی گزارش نکنه!همه سیستم ها لینوکس ویندوز و نرم افزار های مربوطشون تحت شرایطی چنین باگ هایی رو گزارش می کنن.یا با مشکلاتی مواجه میشن.این یه مثال سادست.ما در پروژه های عملیمون باگهایی به مراتب یاس آورتر رو تجربه کردیم!چه در جاوا چه در دات نت.
    2-همونطور که عرض کردم مسائلی مثل زمان مصرفی برای یه متد یا در کل یه آلگوریتم در سیستم های متفاوت و روش های متفاوت امری فی نفسه وابسته به سیستم شامل سیستم عامل-سخت افزار I/O
    و...خوب اینکه فهمیدن چنین امری چقدر میتونه برای یه برنامه جاوا مهم باشه فقط برای بهینه سازی و افزایش کارایی برنامست.مثل مثالی که برای اتوماسیون صنعتی گفتم اهمیت نداره!
    3-حالا برمیگردیم به استقلال از پلت فرم!گفتم که این مسئله یه ایده آل هست.برای مثال آلگوریت های سورت کردن آرایه ها یا Vector
    ها در پیاده سازی های مختلف کارایی های مختلفی دارن.استقلال برای پلت فرم یعتی شما در همه سیستم ها با این آلگوریتم ها به یک شکل کار کنید.یا اینکه امضای متد main
    در همه سیستم ها به چه شکلی باشه.استقلال از پلت فرم برای جاوا یعنی چه شکلی بودن.یعنی شکل واحد داشتن.نه یک چگونگی داشتن.و این فلسفه جاواست.همین مسئله به ما در درک این مسئله کمک میکه تا بفهمیم در کل این مثال اصولا از نظر منطقی مهمله!چرا که به چگونه بودن پیاده سازی جاوا مربوطه.نه به مشخصاتی که سان برای چه شکلی بودن جاوا در همه سیستم ها به یک شکل واحد وضع کرده.
    حالا
    IBM به روش خودش SUN یه جور و اراکل یه جور!
    امیدوارم مفید بوده باشه. وبا تشکر از لطف شما.
    مرسی از توضیحاتتون . و همچنین از اینکه برنامه رو تست کرده بودین .

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •