View Single Post
ישן 09-08-12, 00:20   # 4
perfeito
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Jul 2012
הודעות: 102

perfeito לא מחובר  

ציטוט:
נכתב במקור על ידי Derey22 צפה בהודעה
המכנה המשותף של כל השפות שהזכרת - שהם לא עוברים קימפול אלה הם "אינטרפטר".
למרות זאת הם עדיין שפת תכנות לכל דבר.

ציטוט מווקיפדיה שתסדר לך את העניין: "שפת תכנות היא אוסף של חוקים תחביריים (Syntax) וסמנטיים (Semantic) שבאמצעותם ניתן להגדיר למחשב באופן מפורט פקודות ופעולות שעליו לבצע בתחומים שונים ומגוונים."
Javaעוברת קימפול דרך `javac` הוא הופך את הקוד לבייטקוד ואז מריץ אותו על ה jvm.

לפני הכל מי ש"אוהב" את php ובונה את כל העסק שלו על גבי php נא לא לקרוא

הטענה שלי בגדול היא ש php היא שפת תכנות אבל, זה לא מרגיש כמו שפת תכנות, כמה דוגמאות:

קודם כל תורידו את הסורס של php ותעשו grep למילים האלה:
`hack`
`workaround`
`fix this`
אחרי זה תורידו את כל השפות בעולם תנסו למצוא כמה מילים כאלה יש בסורס 0


ב javascript שהיא שפת תכנות לכל דבר ואחת הגדולות בהם אתה יכול לעשות את זה
קוד:
(function () {
  return function () { console.log('Hello, World!'); }
}())();
אוקיי אז אתם יכולים להגיד ל `php` יש קלאסים ויש closures אבל כשאתה מתכנת ב php כל יום אתה מוצא דבר מטומטם חדש בשפה הזאת:

קוד:
class Test {

  var $foo;

  function __construct () {
    $this->foo = function () {
      echo 'Hello, World';
    };
  }

}

$test = new Test;
$test->foo();
עכשיו בואו תגידו לי למה זה לא עובד?!?!
אני יגיד לכם, כי ה פשוט לא יכולים לגרום לזה לעבוד, הם מפחדים שאני ייצור פונקציה בתוך הקלאס עם אותו שם `foo` בקיצור אם תכנתתם בשפה אחרת כלשהי אתם גם תרגישו מה שאני מרגיש ש php היא לא שפת תכנות, היא פשוט משהו שמנסה להיות שפת תכנות.

רוצים עוד משהו מפגר ?!
החובבנים שעובדים על php גילו ש v8 המנוע של קרום ל javascript מהיר יותר מ phpלפעמים כפול 10 (הם מתקרבים למהירות של c++!!!!!!), מה הם עשו ? חח
לינק:
http://shootout.alioth.debian.org/u3...g=php&lang2=v8

הם רוצים שנריץ javascript בתוך v8 מתוך php
WTF!!

קוד:
<?php
$javaScriptCode = '
function FizzBuzz(correspondences) {
    this.correspondences = correspondences;
    this.accept = function (number) {
        var result = ""
        for (var divisor in this.correspondences) {
            if (number % divisor == 0) {
                result = result + this.correspondences[divisor];
            }
        }
        if (result) {
            return result;
        } else {
            return number;
        }
    }
}
var myFizzBuzz = new FizzBuzz({3 : "Fizz", 5 : "Buzz"});
myFizzBuzz.accept(15);
';
$v8 = new V8Js();
var_dump($v8->executeString($javaScriptCode));
קוד:
$fn = $test->foo;
$fn();
ל phpיש פונקציית strpos() פונקצייה היחידה בעצם למצוא קוד בתוך סטרינג שעובדת מהר... השאר איטיות, אבל מה הבעיה שהיא מחזירה false אם היא לא מוצאת את מה שרצית היא השפה היחידה בעולם שמחזירה false מ strpos(), למה זה בעיה ?

js:
קוד:
if (~'foo'.indexOf('bar')) {
  console.log('doesnt execute no Error.');
}
php:
קוד:
if (~strpos('foo', 'bar')) {
  echo 'ERRROROORORORO!!!';
}
נכון אני יכול להשתמש ב false!== אבל למה ?!

בקיצור strpos() בכל שפה בעולם !! לא מחזירה false תמיד מספר, אם היא לא מוצאת כלום
היא אמורה להחזיר -1.

אני מנסה לעשות מערכת טסטים שתראה כמו ברובי תראו איזה כיף לעשות טסטים:

קוד:
describe Environment, "created from the command line" do
  before(:each) do
    @env = Environment.new
  end

  it "should set the usage message attribute" do
    args = %w(foo bar baz quux)
    @env.parse_command_line(args)
    @env.usage_message.should_not be_empty
  end

  it "should recognize arguments that are not options" do
    args = %w(foo bar baz quux)
    @env.parse_command_line(args)
    @env.should have(4).args
  end

  it "should throw an exception if an illegal option is provided" do
    args = %w(foo -z bar)
    lambda { @env.parse_command_line(args) }.should raise_error
  end

  it "should allow the cvs path to be set" do
    test_path = '/bin/cvs'
    args = ['--cvspath', test_path]
    @env.parse_command_line(args)
    @env.get_option(:cvs_command_path).should == test_path
  end

  it "should be invalid if cvs path does not exist" do
    args = ['--cvspath', 'nonexistent']
    @env.parse_command_line(args)
    @env.should_not be_valid
    @env.errors.should have_at_least(1).error
    @env.errors_on(:cvs_path).should have(1).error
    @env.errors_on(:cvs_path).should match(/not exist/)
  end
end
הכי קרוב שהצלחתי לעשות:

קוד:
describe('Response')
  ->setup(function () {
    return new Response;
  })
  ->its('->status should be 200', function () {
    $this->status->should->be(200);
  });
php היא השפה היחידה שאתה אמור לעשות
<?php אם אתה רוצה שהסקריפט יעבוד.

בקיצור לא יודע מה איתכם אבל אני בתור מתכנת שמעריך את עצמו, לא אומר בראיונות שאני מתכנת ב php, כי אני מתבייש .

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