# Mathics 7.0 – Mathematica의 오픈소스 대안

> Clean Markdown view of GeekNews topic #18168. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=18168](https://news.hada.io/topic?id=18168)
- GeekNews Markdown: [https://news.hada.io/topic/18168.md](https://news.hada.io/topic/18168.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-12-09T11:23:22+09:00
- Updated: 2024-12-09T11:23:22+09:00
- Original source: [github.com/Mathics3](https://github.com/Mathics3/mathics-core/releases/tag/7.0.0)
- Points: 4
- Comments: 1

## Topic Body

### Mathics3/mathics-core 업데이트 요약

- **새로운 기능 및 개선 사항**
  - 내장 함수의 게으른 로딩을 지원하기 위한 작업이 진행됨.
  - Python 코드와 스타일을 현대화하고, 타입 주석을 추가하며, 철자 오류를 제거함.
  - SymPy 및 Python의 최신 버전 사용.
  - 새로운 내장 함수 추가: `$MaxLengthIntStringConversion`, `Elements`, `ComplexExpand`, `ConjugateTranspose`, `LeviCivitaTensor`, `RealAbs`, `RealSign`, `RealValuedNumberQ`.

- **문서화**
  - PDF 파일의 형식 문제 해결.
  - 챕터 및 섹션 목차의 번호 간격 증가.
  - 내장 정의 주변의 여백 공간 증가.
  - 철자 오류 수정.
  - `doctests` 실행 및 LaTeX 문서 생성 코드를 개정하여 점진적 내장 업데이트 가능.

- **호환성**
  - `Plot`은 평가 중 메시지를 표시하지 않음.
  - `Range[]`는 이제 음수도 처리 가능.
  - `DirectedInfinity` 및 `Indeterminate`에 대한 지원 개선.
  - Mathics-Django 인터페이스에서 오류 메시지 툴팁 표시.
  - `$CharacterEncoding`을 세션 내에서 변경 가능.

- **내부 구조**
  - `eval_abs` 및 `eval_sign`을 `Abs` 및 `Sign`에서 추출하여 `mathics.eval.arithmetic`에 추가.
  - 문자열의 최대 자릿수는 7000으로 설정되며 환경 변수 `MATHICS_MAX_STR_DIGITS`로 조정 가능.
  - 실수 비교는 이제 `RealSign`의 내부 구현을 기반으로 함.
  - Python 3.11에서 `$MaxLengthIntStringConversion`은 큰 정수와 문자열 간의 변환 최대 크기를 제어함.

- **버그 수정**
  - `Definitions`는 `pickle`과 호환됨.
  - `Quantity` 표현식에 대한 지원 개선.
  - `Graphics` 및 `Graphics3D`의 배경 옵션 작동.
  - 문자열을 포함한 표현식에 대한 수치 비교 문제 해결.
  - `Switch[]`의 무한대 처리 문제 해결.
  - `Outer[]`의 `SparseArray` 처리 문제 해결.
  - `ArrayQ[]`는 `SparseArray`를 감지함.
  - `BoxExpressionError` 예외 처리 문제 해결.
  - `True`, `False`, `List[]`의 도함수 평가 문제 해결.
  - `Combinatorica` 패키지 수정.
  - `Exit[]` 작동 문제 해결.
  - `BaseForm`이 `$OutputForms`에 나열됨.

- **API 변경 사항**
  - 새로운 함수 `import_and_load_builtins()` 호출 필요.
  - 내장 모듈의 게으른 로딩 지원을 위해 필요함.

- **패키지 업데이트**
  - Python 3.11 지원.
  - Sympy 1.12 지원.

## Comments



### Comment 32155

- Author: neo
- Created: 2024-12-09T11:23:22+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42349375) 
- 이 프로젝트를 몇 년간 지켜보았으며, 오픈 소스 컴퓨터 대수 시스템에 관심 있는 사람들에게 다양한 성숙한 솔루션이 존재함
  - GNU Octave, Maxima 같은 고전적인 것부터 SAGEmath, Symbolics.jl, sympy 같은 현대적인 것까지 다양함
  - GiNaC 같은 상징적 라이브러리부터 SAGEmath 같은 "배터리 포함" IDE까지 폭넓은 범위를 가짐
  - SAGEmath는 웹 노트북 인터페이스를 개척하여 오늘날 Jupyter를 가져옴

- 개인적으로 Mathematica의 LISPy 스타일을 좋아하지만, MMA의 강력함은 방대한 라이브러리에 있음
  - 상징적 통합, 2D/3D 그래픽, 유한 요소 방법 등 기본 주제에 대한 업계 선도 솔루션뿐만 아니라 생물정보학 같은 특수 목적 도메인도 포함됨
  - Mathics는 핵심을 잘 복제했지만 모든 라이브러리가 부족함
  - Matlab과 numpy 복제본의 논리와 유사함

- Wolfram Cloud는 개인 사용에 무료로 제공되며, Wolfram Engine은 명령줄을 통해 Mathematica를 무료로 사용할 수 있는 방법임

- Mathics에 대한 간단한 소개는 [여기](https://mathics.org/)에서 확인 가능함

- Mathematica는 Raspberry Pi에서 무료로 사용할 수 있으며, 대부분의 대학은 사이트 라이선스를 보유하고 있음
  - "Home & Hobby" 라이선스는 연간 $195 또는 영구 라이선스 $390로 비교적 저렴함
  - 취미 라이선스 가격을 지불하는 것이 가치 있다고 생각하며, 수학 소프트웨어를 지원하는 것이 좋은 일이라고 생각함

- (F)OSS 수학 소프트웨어는 여전히 중요한 역할을 함
  - Mathematica는 포괄적이지만 고급 수학에서 몇 가지 중요한 단점이 있음
  - GAP, M2, PARI/GP 같은 (F)OSS 소프트웨어는 Wolfram Language의 부족한 부분을 보완하는 데 중요한 역할을 함

- Mathematica의 기능을 복제하려는 프로젝트에 큰 관심은 없지만, 이러한 프로젝트가 Wolfram Research에 기본 기능을 지속적으로 개선하도록 압박을 가함

- 소프트웨어 엔지니어들은 소프트웨어 비용을 지불하지 않으려는 경향이 있음

- Mathematica의 불편한 점 중 하나는 모든 함수가 동일한 네임스페이스에 밀집되어 있으며, 다른 매개변수화 옵션으로 오버로딩이 없다는 것임
