2009-09-05 2 views
4

특정 분야의 과학자 사용을위한 소프트웨어 라이브러리를 디자인 할 때 좋은 원칙은 무엇입니까? 이것은 화학, 물리학, 재료 과학, 현미경, 생물 분석, 천문학 등과 같은 영역을 의미합니다. SciPy, R, Matlab, JAMA 등의 일반적인 라이브러리는 배제하거나 구체적으로 수학적이거나 데이터 분석. (현재 우리 중 다수는 화학 분야에서 오픈 소스 라이브러리를 만드는 데 관여하고 있으며 다른 영역의 경험을 아는 것이 중요합니다.)특정 도메인 과학 라이브러리를 만들기위한 디자인 원칙

이것은 야심 찬 임무이며 재정적 지원을받는 것이 쉽지 않지만 재현 가능하고 입증 가능한 과학에 점점 더 중요 해지고 있음을 알고 있습니다.

답변

4
  1. 그것은 그것의 사용자가 허용해야합니다. "핸들러", "컨트롤러", "포인터", "메모리 누수"등 순전히 프로그래밍 개념이 적어 질수록 최종 사용자에게 적합합니다.

  2. lib를 재미있는 사람이 버리고 나면 유지 관리해야합니다. 더 짧을수록 "쓸데없는 코드"로 개발되거나 "좋은"와트로 수행되어야합니다. 이 문제에 대해서는 your own question을 참조하십시오.

  3. 이 라이브러리를 사용하는 전문가에게 API를 디자인하려면이 라이브러리가 필요합니다. 그는 당신이 쓰고있는 도서관에서 일반적인 문제 해결 프로그램이 요구하는 것을 알아야하며 구현할 주요 개념을 정의해야합니다. 전문가가 말하는대로 API를 디자인하십시오. 사용자가 보는 방식이 아닙니다. 당신도 전문가라면, 다른 사람을 초대하십시오. 누가 이 아니며, 개발에 관련된 사람은입니다. 그 이유는 개발자가 API를 디자인하는 경향이 있기 때문입니다. 구현 방법은 자연 스럽습니다. 그것이 관련된 문제에 대해서는 자연스러운 것이어야합니다.

1

도메인에 관계없이 좋은 일반 API 디자인을 생각하면 좋으므로 this google tech talk을 확인하십시오. (Joshua Block)

2

"특정 분야의 과학자 사용을위한 소프트웨어 라이브러리를 설계 할 때 좋은 원칙은 무엇입니까?" - 무엇보다 먼저 도메인 전문가 인 IMO입니다. 그 분야에서 일반적으로 성공하는 패키지 종류는 화학자, 물리학 자, 생물 학자 등이 작성합니다.

해당 분야의 과학자가 배우기 쉽거나 배우기 쉬운 프로그래머가 있는지 스스로에게 물어야합니다 과학적 규율.

21 일 동안 학습 언어 X로 볼 수있는 책의 수와 같은 시간대에 화학, 생물학 또는 물리학에서 숙련도를 부여한다고 주장하는 사람의 수로 판단하면 과학자들이 자신의 프로그램을 프로그래밍 할 가능성이 더 많습니다. 자신의 솔루션. 과학자 - - 프로그래밍 해당 도메인 대신 과학을 할

+0

훌륭한 소프트웨어를 제작하려면 "21 일 동안 인터 컬을 배우십시오"에서 찾을 수없는 기술이 필요합니다. 분명히 당신은 도메인 전문가가 필요하며, 그들 중 몇몇에 접근하는 것이 바람직합니다.그러나 물리학자가 쓰는 소프트웨어는 물리학자가 작성한 소프트웨어처럼 보일 것이며 유능한 소프트웨어 전문가가 작성한 소프트웨어보다 덜 신뢰할 수 있습니다. –

+0

필자는 물리 전문가가 전문적인 소프트웨어를 작성하는 방법을 배우는 것이 물리 전문가를위한 것보다 훨씬 쉽다는 것을 제출할 것입니다. 많은 소프트웨어 개발자가 물리학과 같은 다른 분야에서 왔다는 사실은 물리학 자나 엔지니어가 아주 훌륭한 코드를 작성할 가능성이 훨씬 더 높다는 것을 암시합니다. 당신의 "물리학자가 작성한 소프트웨어"는 경우에 따라서는 멀리 떨어져있을 것입니다. – duffymo

0

것이 내 조언 : (! 아마 당신) 당신이 도달하고자하는 과학계의 일반적인 프로그래밍 능력을 측정하고 사용할 수있는 뭔가를 개발 (또는 학습의 조금 필요하지만 너무 많은). 단순하게 유지하거나 깊은 내부 부품의 복잡성을 숨 깁니다. 과학자들은 전문 프로그래머가 아닙니다.