나는 (가상의) 질문을 가지고 있으며, 해결책은 동적으로 코드를 생성하는 것이라고 생각합니다.동적 코드 생성을위한 옵션
사용자가 입력 한 임의의 수학 함수를 신속하게 계산하여 i = 3 + 2i^2 + 6i + 1의 합계 i = 1 ~ N을 찾습니다. N은 임의이고 i^3 + 2i^2 + 6i + 1도 임의로 (다항식 일 필요는 없으며 삼각 함수와 다른 함수도 포함 할 수 있습니다). N이 매우 클 수 있다고 가정 해보십시오. 나는 내 프로그램이 이해할 수있는 바이트 코드 또는 다른 것에 대한 사용자 입력을 이미 파싱했다고 가정하고 대답을 빨리 평가할 수있는 방법을 알고 싶다.
가능한 경우 내 코드를 다른 운영체제 (모바일 포함)에서 쉽게 컴파일하고 실행할 수 있기를 바랍니다.
나는 몇 가지의 생각 :
1) 해석하고 내 바이트 코드에서 각 명령을 실행하는 인터프리터를 작성합니다. 이로 인해 어떤 언어 든 자유롭게 사용할 수 있지만 느립니다.
2) Java/C#으로 작성하고 동적 코드 생성 (예 : Is it possible to dynamically compile and execute C# code fragments?)을 사용하십시오. 이것은 C#/Java가 JIT로 컴파일 된 코드이기 때문에 약간의 속도 저하만으로도 내 소스 코드에 직접 함수를 작성한 것처럼 빨리 실행됩니다. Java는 모바일에서 널리 지원되지 않으며 C#은 Windows 전용입니다.
3) 내가 사용하는 컴파일 언어에 상관없이 어셈블러/C++ 컴파일러/컴파일러를 포함하십시오. 제한 사항은 모바일에서도 작동하지 않는다는 것입니다. 데이터 파일을 실행할 수 없습니다.
4) HTML/자바 스크립트를 작성한 다음 웹 브라우저 컨트롤에 삽입하고 응용 프로그램에 넣으십시오 (일부 사람들이 어디서나 실행할 수있는 범용 앱을 만드는 방법이라고 생각합니다). 하지만 너무 느리고 자바 스크립트로 실제 응용 프로그램을 작성하는 것은 쉽지 않습니다.
어떤 옵션이 가장 적합하다고 생각하십니까? 또는 어쩌면 내가 어쩌면 내 응용 프로그램 코드를 생성하고 생성 된 자바 스크립트 함수를 실행하는 믹스와 함께 가야합니까?
왜이 태그가 자바 스크립트입니까? 자바 스크립트에서 바이트 코드 인터프리터 또는 Java/C# 컴파일러를 작성 하시겠습니까? 실제 환경은 무엇입니까 - 브라우저 또는 OS 실행 파일로 앱을 실행합니까? 실제로 사용자가 출력 할 수있는 (무엇을?) 언어로 읽을 수있는 코드를 생성하고 싶습니까? 아니면 그 수학적 합계 표현을 평가할 수있는 유일한 목적입니까? – Bergi
간단한 해결책 : [네트워크로 연결] (https://www.wolframalpha.com/input/?i=sum+i^3%2B2i^2%2B6i%2B1+over+i=1+to+N) :-) – Bergi
코멘트 주셔서 감사합니다; 나는 내가 분명하지 않다는 것을 깨달았다.원래 의도는 모바일 앱을 작성하는 것이므로 모바일 앱에 웹 브라우저 컨트롤을 삽입하고 페이지를 표시하도록 할 수 있습니다. 나는 더 나은 솔루션이 있는지를보기 위해 데스크탑으로 질문을 확장하고 있습니다. 유일한 목표는 가능한 한 빨리 수치적인 답을 얻는 것입니다. – Bernard