سؤال

أنا على وشك إنتاج نموذج أولي لشركة ناشئة في مجال التكنولوجيا انضممت إليها للتو، وأحاول تحديد اللغة التي سأستخدمها.ستكون أداة ويب بسيطة تحتوي على قاعدة بيانات MySQL في الخلفية وبعض عناصر الذكاء الاصطناعي التي تحدث بينهما.لقد استخدمت Ruby وPHP بقدر معقول في الماضي، ولكن أتساءل عما إذا كان من الأفضل أن أستخدم Python أو حتى Perl.تجربتي الأساسية في البرمجة هي استخدام C / C++ / Java، ولكنني أشعر أنني أريد أن أبحث عن شيء من شأنه أن يجعل حياتي سهلة قدر الإمكان لأنني أقوم فقط بتطوير نموذج أولي.

أعتقد أن ما أبحث عنه هو:

  • سرعة التطور
  • مكتبات الذكاء الاصطناعي الموجودة (على سبيل المثالSVMs، الشبكات العصبية، المصنفات الافتراضية)
  • سهولة التفاعل مع واجهة الويب

هل لأحد أية أفكار عن هذا الموضوع؟

هل كانت مفيدة؟

المحلول

سواء كنت نموذجًا أوليًا أم لا، إذا كنت تعالج كميات هائلة من الأرقام، فقد تحتاج إلى سرعة Java أو C/C++ على الأقل بالنسبة لأجزاء الذكاء الاصطناعي.لا أعرف حقًا ما الذي تفعله بالضبط، لكن الكثير من عناصر الذكاء الاصطناعي تتطلب عمليات حسابية مكثفة.قد تجد أن Python VS C يحدث فرقًا من 10 دقائق إلى ساعتين تقريبًا أو أكثر (أو من يوم إلى شهر).

ربما يكون أفضل رهان لك هو النهج المختلط.Java/C++ أو شيء من هذا القبيل للذكاء الاصطناعي (أقول Java فقط لأنها تحتوي على عدد كبير من المكتبات، ولدي أيضًا كتاب عن Data Mining يناقش العديد من المكتبات في Java المتوفرة مجانًا وتقوم بتنفيذ بعض التقنيات).وPython/Ruby/Perl لكل شيء آخر (مثل أجزاء الويب).

أنا متردد في التوصية بـ PHP لأنك لا تعرف أبدًا ما قد تفعله.يبدو أن PHP تتألق حقًا على الويب وفي الأشياء المتعلقة بالويب، ولكن بمجرد أن تحتاج إلى استخدامات غير الويب، يبدو أنها أكثر تعقيدًا من أي شيء آخر (على الرغم من أنني رأيت إشارات إلى PHP يتم استخدامها مثل Perl/Python/etc.كلغة برمجة عادية من قبل بعض الناس).

يعد الاختيار بين Python/Ruby/Perl مسألة ذوق تقريبًا.باستثناء أن Perl لديه CPAN وهو ما يفوق أي شيء تمتلكه Python وRuby في الوقت الحالي.نظرًا لأنك في مرحلة البدء، فإن المجموعة الواسعة من الوحدات النمطية في CPAN والتي يمكنك تجميعها معًا قد توفر لك قيمة في إنجاز الأمور في وقت أقرب.أنا شخصياً أحب Python أكثر من Perl (أجد أن نظام كائنات Perl قبيح عند إنشاء كائناتك الخاصة، وأحيانًا يستغرق الأمر بعض الوقت لمعرفة كيفية عمل التعليمات البرمجية التي كتبتها منذ أشهر).لكن لا يمكنني إنكار قيمة CPAN.

باختصار، ربما تحتاج إلى لغة أداء لبعض عناصر الذكاء الاصطناعي وسهولة وسرعة تطوير لغة برمجة لكل شيء آخر لأن الشركة الناشئة تدور حول إنجاز المنتج في أسرع وقت ممكن والتغلب على منافسيك لتحقيق ذلك. سوق.أود أن أوصي بـ Python، ولكن بناءً على ما أعرفه عن الشركات الناشئة، فأنت بحاجة إلى تقييم CPAN في عملية اتخاذ القرار.إن مجرد القدرة على دمج مجموعة من الوحدات معًا والتي تفعل ما تريد بسرعة يمكن أن يكون ذا قيمة كبيرة في البداية.

يجب أن أضيف أيضًا أن Perl و Python (لست متأكدًا من Ruby ولكني أعتقد ذلك) يمكنهم الاتصال برمز C بسهولة إلى حد ما.لذلك يمكنك استخدام مكتبات C أو C++ عن طريق إنشاء مجموعة من الارتباطات للغة.يمكنك أيضًا محاولة كتابة كل شيء بلغة Perl/Python/Ruby وإذا كان الأمر بطيئًا جدًا، فأعد كتابة هذا الجزء بلغة C أو C++ واستدعائه من لغة البرمجة النصية.مع بداية الأمر برمته، قد تكون إعادة الكتابة بهذه الطريقة مكلفة للغاية من حيث إنجاز شيء ما.نظرًا لأنك تشعر براحة أكبر في لغة C أو C++ أو Java، فقد يكون من المفيد الذهاب إلى هناك منذ البداية.

نصائح أخرى

تعد كل من Ruby وPython وPerl الثلاثة جيدة للتطوير السريع والنماذج الأولية وتطبيقات الويب.أظن من سؤالك أن الجزء الأكثر أهمية في هذا المشروع هو قطعة الذكاء الاصطناعي.لدى Perl عدد لا بأس به من المكتبات المتعلقة بالذكاء الاصطناعي على CPAN.تفحص ال مساحة الاسم لمنظمة العفو الدولية لأخذ العينات.هناك أيضًا وحدات نمطية في مساحات أسماء أخرى، لذا تأكد من البحث عن أشياء محددة مثل "Bayes" أو "SVM".

لا أعرف الكثير عن خيارات مكتبة الذكاء الاصطناعي لـ Python أو Ruby.توصيتي هي قضاء يوم أو يومين وإجراء بعض الأبحاث الجادة حول المكتبات الخاصة بكل من Perl وPython وRuby.نظرًا لأنك استخدمت Ruby بالفعل من قبل، فإذا كان ذلك يحتوي على المكتبات التي تحتاجها، فلا داعي للتفكير، ومن المؤكد أن Ruby صديق للويب.

فيما يتعلق بالويب، بالنسبة لبيثون، سمعت الكثير من الأشياء الجيدة عنها جانغو.بالنسبة لبيرل، أنصحك بإلقاء نظرة على عامل حفاز.

ستلاحظ أنني تجاهلت PHP.وهذا شيء أحاول القيام به قدر الإمكان ;)

اخترت اللغة لأنها الأداة المناسبة للوظيفة، لكنك لم تخبرنا ما هي الوظيفة بعد.نحن لا نعرف ما هي أنواع المكتبات التي ستحتاج إليها، وما الذي يستخدمه الأشخاص الآخرون في الصناعة لنفس الوظيفة، وما إلى ذلك.يبدو أن معظم الناس يوصون بشيء ما مع جهلهم التام بما تحتاج إلى القيام به بالفعل، مما يعني أنهم ليس لديهم أي فكرة عن كيفية مساعدتك.

وكما أشرت بالفعل:

  • إذا كنت الشخص الوحيد الذي يقوم بمهمتك باللغة X، فسوف تجد صعوبة في الحصول على المساعدة من أي شخص آخر.اكتشف ما استخدمه الآخرون بالفعل للقيام بمهام مماثلة.

  • إذا كانت جميع المكتبات الجيدة لمهمتك موجودة بلغة أخرى، فسيتعين عليك إعادة اختراع الكثير من العجلات.بدلًا من سؤالك، اسأل عن المكتبات التي تقوم بالأجزاء المهمة من مهمتك، ثم ابحث عنها.يعد "الذكاء الاصطناعي" موضوعًا كبيرًا جدًا بحيث لا يمكن التوصية بأي شيء.

  • إذا لم يكن أحد في العمل يعرف اللغة التي تريد استخدامها، حتى لو كانت لغة نماذج أولية سريعة، فسوف تفقد السرعة لأنه يتعين عليهم تعلم اللغة.إن تعلم اللغة هو أكثر من مجرد معرفة تركيبها؛إنها تعرف المصطلحات والمكتبات والوثائق وغير ذلك الكثير.ماذا يعرف الأشخاص في العمل بالفعل؟ماذا سيتحملون؟

  • هل تريد حقًا أن تجعل حياتك أسهل، أو تجعلها أسهل على عميلك؟قد تتعارض هذه الأشياء في بعض الأحيان، لذا يجب عليك التفكير فيما إذا كنت تقدم القيمة التي يحتاجها العميل حقًا.يبدو أن النماذج الأولية غالبًا ما تتحول إلى رمز إنتاج، لذلك بمجرد أن تبدأ، غالبًا ما تتعثر فيها.

الشيء الوحيد الذي يمكنني التعليق عليه حقًا هو:PHP هي في الأساس DSL للويب، في حين أن اللغات الثلاثة الأخرى (Perl وRuby وPython) هي لغات ذات أغراض عامة ليس لها مجال محدد، على الرغم من أن جميعها قادرة بالتأكيد على الويب.

فيما يتعلق بالنقطة الثانية، أعتقد أن PHP ربما يكون الخيار الأسوأ من قائمتك.

منظمة العفو الدولية؟قطعاً اللثغة

أعتقد أن Java ستجعل حياتك أسهل.

  • سرعة التطوير - قلت أنك على دراية بها بالفعل.

  • مكتبات الذكاء الاصطناعي الموجودة - راجع جون

  • سهولة التفاعل مع واجهة الويب - servlets وJSP والعديد من أطر عمل الويب التي لا يمكن إدراجها.

تتكامل Java أيضًا بسهولة مع MySQL باستخدام JDBC.

وأنا أتفق مع الإجابات الأخرى التي توصي بـ Java، خاصة أنك قد تحتاج إلى سرعتها في كود الذكاء الاصطناعي والمكتبات وما إلى ذلك.المتوفرة.

من المحتمل أن يعمل مزيج من Java (servlets) وJSP بشكل جيد.

ومع ذلك، فإن سبب كتابة هذه الإجابة هو التوصية بشدة بما يلي:

يذهب مع ما تعرفه.

تعد اللغات الجديدة أو اللغات التي تعرفها "نوعًا ما" رائعة بالنسبة للأشياء الممتعة، وحتى بالنسبة لبعض مشاريع التطوير والنماذج الأولية.ولكن إذا كنت بحاجة إلى شيء يناسبك على المدى الطويل، فاستخدم أفضل لغة للمهمة التي تعرفها بالفعل.في هذه الحالة، أعتقد (من رسالتك) أنه سيكون جافا.

أيضًا - إنه نموذج أولي الآن، لكن يمكنني أن أضمن تقريبًا أنه إذا نجح، فسوف يصبح البداية الافتراضية للتطبيق الفعلي.أشك حقًا في أنه سيكون لديك متسع من الوقت لإعادة كتابة التطبيق من الصفر بلغة أخرى، لذا مرة أخرى - استخدام ما تعرفه الآن سيؤتي ثماره لاحقًا عندما "يضغط عليك الوقت" ويجب عليك الوفاء به.

هتافات،

أعتقد أن بيرل سيكون الطريق الصحيح.الدفع غزال أمريكي ضخم بالنسبة لـ Perl OOP، أما بالنسبة للمكتبات الأخرى التي تبحث عنها، فأنا متأكد من أنك ستجد بعضها على CPAN (ربما شيء من هذا القبيل الوحدات البايزية )

إذا كنت معتادًا على بيئة/مكدس يونكس، فسأختار لغة بايثون - فهي لطيفة وسهلة.

يحرر:يمكنك تنفيذ الجزء الخاص بمعالجة الأرقام في لغة C أو C++ وجعله وحدة نمطية لاستخدامها في كود بايثون الخاص بك.بهذه الطريقة، تحصل على كود سريع لتحليل الأرقام، وغراء سهل البرمجة.

لقد تم ذكر Lisp، لكنني أعتقد أن Scheme (على وجه الخصوص مخطط قانون البراءات) يعد في بعض النواحي خيارًا جيدًا مثل Ruby/Python/Perl/PHP.لا تحتوي على العديد من المكتبات الجيدة مثل بعض تلك المكتبات، وهو ما يعد ناقصًا، ولكن معظم المخططات بها ffi (واجهة الوظائف الخارجية) ممتازة، مما يجعل من السهل دمج المكتبات الخارجية (كود C).قوة أخرى للمخطط هي ملف الأداء الخاص به.يمكنك غالبًا الاقتراب من أداء نوع كود C في الأشياء التي تعالج الأرقام.

قد ترغب في إلقاء نظرة على GLASS:Smalltalk وقاعدة بيانات شاطئ البحر والأحجار الكريمة.ويب أفضل من روبي، ولا أورم، وأفضل لغة نمذجة.

أود أن ألقي نظرة ثانية على الكؤوس.من المؤكد أنه من السهل الإعداد والبدء في العمل خلال ساعة واحدة، ولا يزال لديك قوة جافا تحتها.

وأنا أتفق أيضًا مع أولئك الذين يقولون تأكد من أنك تفكر في المستقبل.لقد كنت المستفيد في كثير من الأحيان من أولئك الذين لم يفعلوا ذلك.

لو كنت أنا، كنت سأكتب كل شيء بلغة بايثون، ثم أضع ملفًا تعريفيًا له وأكتب الاختناقات فيه بيركس.عندما تقوم بتطوير خوارزميات معقدة من نوع الذكاء الاصطناعي، فمن المفيد (1) التطوير بلغة عالية المستوى حتى تتمكن من تجربة العديد من الأساليب المختلفة بسرعة و(2) من المفيد أن يكون لديك تطبيق مرجعي بلغة عالية المستوى اختبار تنفيذ C/C++ ضد.أستخدم python/pyrex بهذه الطريقة طوال الوقت وهي تعمل جيدًا بالنسبة لي.

إذا كنت تقوم بإعداد نموذج أولي سريع وقذر، فمن المحتمل أن يكون من مصلحتك الالتزام بشيء تعرفه بالفعل، خاصة إذا كان النموذج الأولي هو إظهار بعض الوظائف الفاخرة الأخرى؛أداء كثير لا يكون مصدر قلق كبير هنا.

جرب بايثون باستخدام Mod_Python.كلغة، فهي تحتوي على الكثير من وحدات التعلم الآلي ومعالجة اللغة الطبيعية الرائعة، كما أنها سهلة القراءة والتعلم والاستخدام.

نظرًا لأنه ليس تطبيق CRUD بسيطًا، فقد تكون Java خيارًا جيدًا.ألق نظرة على غرايلز ( http://grails.org/ ) فهو يوفر الكثير من السقالات وإنشاء التعليمات البرمجية التي يوفرها إطار عمل مثل Rails، ولكنه يوفر تكاملًا سلسًا مع أي مكتبة أو إطار عمل Java آخر موجود.

PHP أو حتى SSI سيكون خياري للنماذج الأولية في هذه الحالة.تفكيري:لا داعي للقلق بشأن نظام القوالب، حيث أن كلاهما عبارة عن أنظمة قوالب.لا معنى لإضاعة الوقت في اتخاذ قرار بشأن نظام القوالب لمجرد نموذج أولي.يعد SSI على وجه الخصوص خيارًا مقنعًا، فلا يزال لديك اختيارك للغات لمعالجة CGI، أما بالنسبة لإرجاع البيانات غير الذرية، فيمكنك إصدار JSON، ثم السماح لواجهة المستخدم بالتكرار فوق بنية البيانات التي تم إرجاعها باستخدام Javascript.

شيء يدير الذاكرة بالنسبة لك.يزعمون أن التغير التكنولوجي هو الذي يعطي أكبر دفعة في الإنتاجية.أعتقد أن الجنيه مقابل الجنيه c# من الصعب للغاية التغلب عليه.

بخصوص بايثون:

إذا كنت بحاجة إلى أداء للأشياء التي تتطلب حوسبة مكثفة، فانظر إلى Numeric Python http://numpy.scipy.org/ وبيركس http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/ .Numeric Python هو امتداد لـ Python يوفر الكثير من المرافق الرقمية القديمة مثل رمز C السريع - الرياضيات المتجهة (أداة أساسية لعمل ANN)، وما إلى ذلك.Pyrex هي أداة تسمح لك أساسًا بتجميع تعليمات Python البرمجية وتحويلها إلى ملف أصلي قابل للتنفيذ.

مع Pyrex، يجب أن تكون حذرًا بشأن استخدام الانعكاس، لأنه لا يمكنه ترجمة التعليمات البرمجية التي تستخدم بنيات انعكاسية معينة بشكل كامل (خاصة locals() و globals()).أذكر هذا القيد فقط لأن كلا من الذكاء الاصطناعي والتشفير الاستكشافي (المتضمن في ملاحظة "النموذج الأولي") غالبًا ما يستفيدان من الانعكاس أكثر من الأنواع الأخرى من مجالات التطبيق.

إذا كنت من مستخدمي Mac، قم بإلقاء نظرة على كائنات الويب للقيام بكل الأمور المتعلقة بإطار العمل، ويمكنك التركيز على كتابة التعليمات البرمجية العصبية ذات المعنى في Java.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top