문제

방금 가입 한 기술 스타트 업을위한 프로토 타입을 제작하려고하며 사용할 언어를 결정하려고합니다. 백그라운드에 MySQL 데이터베이스가있는 간단한 웹 도구와 그 사이에 일부 AI 작업이 진행됩니다. 나는 과거에 Ruby와 PHP를 합리적인 금액을 사용했지만 Python이나 Perl을 사용하는 것이 더 나을지 궁금합니다. 저의 주요 프로그래밍 경험은 C / C ++ / Java에 대한 것이지만 프로토 타입을 개발하고 있기 때문에 가능한 한 쉽게 내 인생을 만들 수있는 무언가를하고 싶다고 생각합니다.

내가 찾고있는 것은 다음과 같습니다.

  • 개발 속도
  • 기존 AI 라이브러리 (예 : SVM, 신경망, 베이지안 분류기)
  • 웹 인터페이스와 쉽게 상호 작용할 수 있습니다

누구든지 이것에 대한 생각이 있습니까?

도움이 되었습니까?

해결책

프로토 타입이든 아니든, 엄청난 양의 숫자를 획득하는 경우 적어도 AI 부품의 경우 Java 또는 C/C ++의 속도가 필요할 수 있습니다. 나는 당신이 무엇을하고 있는지 정확히 알지 못하지만 많은 AI 물건은 계산 집약적입니다. Python vs C가 10 분에서 거의 2 시간 이상 (또는 일상에서 한 달)에 차이가있을 수 있습니다.

아마도 최선의 방법은 하이브리드 접근법 일 것입니다. Java/C ++ 또는 AI를위한 무언가 (나는 Libraries가 많기 때문에 Java 만 말합니다. 데이터 마이닝에 관한 책이있어 Java의 여러 라이브러리를 자유롭게 사용할 수 있고 일부 기술을 수행합니다). 및 다른 모든 것에 대한 파이썬/루비/Perl (웹 부품과 같은).

당신이 무엇을하고 있는지 알지 못하기 때문에 PHP를 추천하는 것을 주저합니다. PHP는 웹과 웹 관련 사항에 대해 실제로 빛나는 것처럼 보이지만 웹 용도가 필요하지 않으면 어떤 것보다 더 번거로운 것 같습니다 (PHP에 대한 참조가 Perl/Python 등처럼 사용되는 것을 보았습니다. 일부 사람들의 스크립팅 언어).

Python/Ruby/Perl 사이의 선택은 거의 맛의 문제입니다. Perl은 Python과 Ruby가 지금 가지고있는 CPAN을 제외하고는 CPAN이 있습니다. 시작 중이기 때문에 CPAN에서 다양한 모듈을 선택하면 일을 더 빨리 수행 할 때 가치를 제공 할 수 있습니다. 개인적으로 나는 Perl 위의 Python을 좋아합니다 (Perl의 객체 시스템이 자신의 객체를 구축 할 때 추악한 것으로 나타났습니다. 때로는 몇 달 전에 작성한 코드가 어떻게 작동하는지 알아내는 데 약간의 시간이 걸립니다). 그러나 나는 CPAN의 가치를 부정 할 수 없습니다.

요컨대, 일부 AI에 대한 성능 언어와 다른 모든 것에 대한 스크립팅 언어의 쉽고 발전의 속도가 필요할 것입니다. 시작은 가능한 한 빨리 제품을 수행하고 경쟁 업체를 때리는 것입니다. 시장. 파이썬을 추천하고 싶지만 스타트 업에 대해 알고있는 내용을 바탕으로 의사 결정 과정에서 CPAN을 평가해야합니다. 당신이 원하는 것을 신속하게 수행하는 많은 모듈을 함께 때릴 수 있다는 것은 시작에서 큰 가치가 될 수 있습니다.

또한 Perl과 Python (루비에 대해 잘 모르겠지만 생각합니다)은 C 코드를 쉽게 호출 할 수 있습니다. 따라서 언어에 바인딩 세트를 만들어 C 또는 C ++ 라이브러리를 사용할 수 있습니다. 또한 Perl/Python/Ruby에 모든 것을 쓸 수도 있고 너무 느리면 C 또는 C ++에서 해당 부분을 다시 작성하고 스크립팅 언어에서 호출 할 수 있습니다. 전체 스타트 업에서 이와 같이 다시 쓰는 것은 무언가를 끝내는 데있어 매우 비쌀 수 있습니다. 또한 C 또는 C ++ 또는 Java에서 가장 편안하기 때문에 처음부터 갈 가치가 있습니다.

다른 팁

Ruby, Python 및 Perl 세 가지 모두 빠른 개발, 프로토 타입 및 웹 앱에 적합합니다. 이 프로젝트의 가장 실질적인 부분은 AI 조각이라고 생각합니다. Perl에는 CPAN에 많은 AI 관련 라이브러리가 있습니다. 확인하십시오 AI 네임 스페이스 샘플링을 위해. 다른 네임 스페이스에는 모듈이 있으므로 "베이즈"또는 "SVM"과 같은 특정 사항을 검색하십시오.

Python 또는 Ruby의 AI 라이브러리 옵션에 대해 많이 모릅니다. 저의 추천은 하루나 이틀을 보내고 각각 Perl, Python 및 Ruby의 라이브러리에 대한 진지한 연구를 수행하는 것입니다. 이미 루비를 사용했기 때문에 필요한 도서관이 있다면, 그것은 쉬운 일이 아니며 루비는 확실히 웹 친화적입니다.

웹 쪽이가는 한, 파이썬을 위해, 나는 많은 좋은 점들을 들었습니다. 장고. Perl의 경우 살펴 보는 것이 좋습니다 촉매.

내가 PHP를 무시했다고 주목할 것입니다. 그것은 내가 가능한 한 많이하려고 노력하는 것입니다.)

당신은 그것이 직업에 적합한 도구이기 때문에 언어를 선택하지만, 아직 직업이 무엇인지 말하지 않았습니다. 우리는 어떤 종류의 라이브러리가 필요한지, 업계의 다른 사람들이 같은 직업에 어떤 사용을 사용하는지를 모릅니다. 대부분의 사람들은 당신이 실제로해야 할 일을 완전히 무지하여 무언가를 추천하는 것 같습니다. 즉, 그들이 당신을 도울 방법을 모르겠습니다.

이미 지적했듯이 :

  • 당신이 언어 X에서 당신의 일을하는 유일한 사람이라면, 당신은 다른 사람으로부터 도움을받는 데 어려움을 겪게 될 것입니다. 다른 사람들이 이미 비슷한 작업을 수행했던 것을 찾으십시오.

  • 당신의 과제에 대한 모든 좋은 라이브러리가 다른 언어로된다면, 당신은 많은 바퀴를 재발 명해야 할 것입니다. 귀하의 질문 대신, 어떤 도서관이 귀하의 업무의 중요한 부분을 수행하는지 물어보고 연구하십시오. "AI"는 무엇이든 추천하기에는 너무 큰 주제입니다.

  • 직장에서 아무도 사용하고 싶은 언어를 아는 사람이 없다면, 빠른 프로토 타이핑 언어이더라도 언어를 배워야하므로 속도를 잃게됩니다. 언어를 배우는 것은 구문을 아는 것 이상입니다. 관용구, 도서관, 문서 등을 알고 있습니다. 직장에있는 사람들은 이미 무엇을 알고 있습니까? 그들은 무엇을 용납 할 것인가?

  • 당신은 정말로 당신의 인생을 더 편하게 만들거나 고객이 더 쉽게 만들고 싶습니까? 이러한 것들은 때때로 상충되므로 고객에게 필요한 가치를 실제로 제공하는지 고려해야합니다. 프로토 타입은 종종 생산 코드로 바뀌는 것처럼 보이므로 시작 일단 시작하면 종종 붙어 있습니다.

내가 실제로 언급 할 수있는 유일한 것은 이것입니다. PHP는 웹에 대한 DSL이지만 다른 세 가지 (Perl, Ruby, Python)는 특정 도메인이없는 일반적인 목적 언어이지만 모두 웹 캡처 가능합니다. .

두 번째 총알 점과 관련하여 PHP가 아마도 귀하의 목록에서 최악의 선택 일 것이라고 생각합니다.

일체 포함? 분명히 LISP

나는 Java가 당신의 인생을 가장 쉽게 만들 것이라고 생각합니다.

  • 개발 속도 - 당신은 이미 그것에 익숙하다고 말했습니다.

  • 기존 AI 라이브러리 - 체크 아웃 Joone

  • 웹 인터페이스와 쉽게 상호 작용할 수 있습니다 - 서블릿, JSP, 너무 많은 웹 프레임 워크를 나열합니다.

Java는 또한 JDBC를 사용하여 MySQL과 쉽게 통합합니다.

Java를 추천하는 다른 답변에 동의합니다. 특히 AI 코드의 속도와 사용 가능한 라이브러리 등의 속도가 필요할 수 있습니다.

Java (서블릿)와 JSP의 조합은 아마도 잘 작동 할 것입니다.

그러나이 답변을 작성하는 이유는 가장 강력한 권장입니다.

당신이 아는 것과 함께 가십시오.

새로운 언어 나 당신이 "알고있는"종류의 "알고있는 것은 재미있는 것들과 심지어 일부 개발 프로젝트와 프로토 타이핑에도 좋습니다. 그러나 장기적으로 당신에게 효과가있는 무언가가 필요하다면 이미 알고있는 과제에 가장 적합한 언어를 사용하십시오. 이 경우 (귀하의 게시물에서) Java라고 생각합니다.

또한 - 이제 프로토 타입이지만 작동하면 실제 응용 프로그램의 기본 시작이 될 것이라고 거의 보장 할 수 있습니다. 나는 당신이 다른 언어로 처음부터 응용 프로그램을 다시 작성할 시간을 가질 것이라고 정말로 의심합니다. 다시 한번 당신이 알고있는 것을 사용하면 나중에 그들이 당신과 당신이 전달해야 할 때 배당금을 지불 할 것입니다.

건배,

-아르 자형

나는 Perl이 갈 길이라고 생각합니다. 체크 아웃 엘크 Perl OOP의 경우, 검색하고있는 다른 라이브러리에 대해서는 일부를 찾을 수 있다고 확신합니다. CPAN (아마도 베이지안 모듈 )

유닉스 스택/환경에 익숙하다면 파이썬으로 갈 것입니다.

편집 : C 또는 C ++에서 숫자 크런치 부품을 구현하고 파이썬 코드에서 사용할 모듈로 만들 수 있습니다. 이런 식으로, 당신은 빠른 숫자 크 런칭 코드와 프로그램이 쉬운 접착제를 얻을 수 있습니다.

LISP가 언급되었지만 계획 (특히 plt-scheme)는 루비/파이썬/perl/php만큼 좋은 선택입니다. 그것은 마이너스 인 그 중 일부만큼 좋은 라이브러리를 가지고 있지 않지만 대부분의 체계에는 우수한 FFI (외부 기능 인터페이스)가있어 외부 (C 코드) 라이브러리를 통합하는 것이 중요합니다. 체계의 또 다른 강점은 성능 프로파일입니다. 종종 숫자 크런치 물건에서 C- 코드 유형 성능을 얻을 수 있습니다.

Glass : Smalltalk, Seaside 및 Gemstone Object 데이터베이스를 살펴볼 수 있습니다. 루비, ORM 및 최고의 모델링 언어보다 더 나은 웹.

나는 두 번째로 성배를 볼 것입니다. 1 시간 안에 설정하고 일하는 것은 확실히 쉽고, 여전히 그 아래에 자바의 힘이 있습니다.

나는 또한 당신이 길을 생각하고 있는지 확인하는 사람들과 동의합니다. 나는 그렇지 않은 사람들의 수혜자 방식이 너무 많았습니다.

그것이 나라면, 나는 모든 것을 파이썬으로 쓰고 그것을 프로파일하고 병목 현상을 쓸 것입니다. 파이렉스. 복잡한 AI- 타입 알고리즘을 개발할 때 (1) 고급 언어로 개발하는 것이 유용하므로 다양한 접근 방식을 빠르게 시도하고 (2) 고급 언어로 참조 구현을하는 데 유용합니다. C/C ++ 구현을 테스트하십시오. 나는 항상 이런 식으로 Python/pyrex를 사용하고 그것은 나에게 잘 작동합니다.

빠르고 더러운 프로토 타입을 휘젓는 경우, 특히 프로토 타입이 다른 멋진 기능을 보여 주려고하는 경우 이미 알고있는 것을 고수하는 것이 좋습니다. 성능은 여기에 큰 관심사가 아닙니다.

mod_python을 사용하여 Python을 사용해보십시오. 언어로서, 그것은 훌륭한 기계 학습과 자연어 처리 모듈을 많이 가지고 있으며, 읽고, 배우고, 사용하기 쉽습니다.

간단한 CRUD 앱이 아니기 때문에 Java는 좋은 옵션 일 수 있습니다. 성배를 살펴보십시오 ( http://grails.org/ ) Rails와 같은 프레임 워크가하는 많은 스캐 폴딩 및 코드 생성을 제공하지만 다른 Java 라이브러리 또는 프레임 워크와 완벽한 통합을 제공합니다.

이 경우 PHP 또는 SSI조차 프로토 타이핑을위한 선택이 될 것입니다. 내 추론 : 템플릿 시스템에 대해 걱정할 필요가 없습니다. 둘 다 템플릿 시스템이기 때문입니다. 단순한 프로토 타입을위한 템플릿 시스템을 결정하는 데 시간을 낭비하지 않습니다. 특히 SSI는 설득력있는 선택입니다. 여전히 CGI 처리를위한 언어를 선택할 수 있으며, 원자가 비 원자 데이터를 반환 할 때 JSON을 방출 한 다음 JavaScript를 사용하여 반환 된 데이터 구조를 통해 UI가 루프하도록 허용 할 수 있습니다.

당신을 위해 기억을 관리하는 것. 그들은 생산성이 가장 큰 기술 변화라고 주장합니다. 파운드-파운드 C#은 이기기가 매우 어렵다고 생각합니다.

파이썬에 관한 :

컴퓨팅 집약적 인 물건을 위해 성능이 필요한 경우 숫자 파이썬을보십시오. http://numpy.scipy.org/ 그리고 Pyrex http://www.cosc.canterbury.ac.nz/greg.ewing/python/pyrex/ . 숫자 파이썬은 Python Extension으로, 빠른 C 코드 (ANN 작업을위한 필수 도구) 등의 빠른 C 코드와 같은 많은 구식 숫자 시설을 제공하는 Python 확장입니다. Pyrex는 Python 코드를 본질적으로 컴파일 할 수있는 도구입니다. 기본 실행 파일.

Pyrex를 사용하면 특정 반사 구성 (특히 Locals () 및 Globals ())를 사용하는 코드를 완전히 컴파일 할 수 없기 때문에 반사를 사용해야합니다. AI와 탐색 적 코딩 ( "프로토 타입"에 의해 암시 된)은 종종 다른 종류의 응용 영역보다 반사를 활용하기 때문에이 제한 사항에 대해서만 언급합니다.

Mac 사용자라면 살펴보십시오 webobjects 모든 프레임 워크 작업을 수행하려면 Java에서 의미있는 신경 코드를 작성하는 데 집중할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top