Wolfram (язык программирования)
Последнее изменение этой страницы: 20:19, 1 июня 2016.
Парадигма | функциональный,процедурный, массивное программирование |
---|---|
Спроектировано | Stephen Wolfram |
Разработчики | Wolfram Research |
Первый появившийся | 2013 |
Печать дисциплины | динамическая, сильная |
Портал: | www.wolfram.com/language |
Под влиянием | |
Mathematica | |
Влияние | |
Julia |
Wolfram (англ. Wolfram Language) — весьма общий мультипарадигмальный язык программирования. Разработан язык компанией Wolfram Research. Служит основным связующим языком для системы Mathematica. Его создатели заложили в него возможность реализовывать произвольные структуры и данные. Он был спроектирован как максимально универсальный язык, с акцентом на символьные вычисления, функциональное и логическое программирование.
Содержание
История
Стивен Вольфрам является британским ученым, известным своими работами в области физики элементарных частиц и клеточных автоматов, информатики и математики. Он является автором книги «A New Kind of Science" и создателем приложений на основе программного обеспечения Mathematica и Wolfram Alpha, разработанного в 2009 году, представляющего собой интернет-сервис.
Основные принципы
Основные принципы языка являются:
- Научное программирование на основе максимального знания.
- Мета алгоритмы: максимально возможная автоматизация.
- Согласованность: язык поддерживает единую и элегантную конструкцию.
- Символическое представление: все (данные, формулы, графики, код, документы) представлены в виде символических выражений.
- Модель мира: язык Вольфрам построил широкую модель мира через Wolfram Alpha.
- Универсальный развертывания: развертывание языка на любой платформе.
- Встроенные подключения к широкому спектру языков, услуг, программ и устройств, использующих Wolfram Cloud.
- Интерактивность.
- Полностью масштабируемое: позволяет масштабирование программ с программами одной линии с миллионами строк и самостоятельного использования для широкого общественного развертывания.
Примеры
Код для вычисления 2 + 2
ln[] = 2+2
Изменение семейства шрифтов:
ln[] = ImageReflect[Rasterize[Style["name",40,FontFamily->"Comic Sans MS"]],Left->Right]
Рисование диска размером 100:
ln[] =Graphics[Disk[],ImageSize->100]
Код, полностью изменяющий слово “rhinoceros”:
ln[] = StringReverse["rhinoceros"]
Примеры различных программ:
F=GF[2];PowerListQ[GF[2]]=True;
{table,CD,L}=BM[{0,F[{1}],0,F[{1}],F[{1}],0,F[{1}],0,0,F[{1}]},F];
table//TableForm
Print["C(D)=",Simplify[CD],"; L=", L];
n s^(n+1) \[Delta] C(D) 2L<=n C^*(D) L \[Delta]^* \[Lambda]
Initial loading: 1 1 0 1 1
F=GF[2,{1,1,0,0,1}];PowerListQ[GF[2,{1,1,0,0,1}]]=True;
{table,CD,L}=BM[{FieldExp[F,8],FieldExp[F,6],FieldExp[F,11],FieldExp[F,5]},F];
table//TableForm
Print["C(D)=",Simplify[CD],"; L=", L];
n s^(n+1) \[Delta] C(D) 2L<=n C^*(D) L \[Delta]^* \[Lambda]
Initial loading: 1 1 0 1 1
0 \[Alpha]^8 \[Alpha]^8 1\[Alpha]^8 + 1 1 \[Alpha]^8 1
1 \[Alpha]^8\[Alpha]^6 \[Alpha]^11 1\[Alpha]^13 - 2
2 \[Alpha]^8\[Alpha]^6\[Alpha]^11 \[Alpha]^13 1\[Alpha]^13\[Alpha]^5 + 1\[Alpha]^13 2 \[Alpha]^13 1
3 \[Alpha]^8\[Alpha]^6\[Alpha]^11\[Alpha]^5 \[Alpha]^1 1\[Alpha]^8\[Alpha]^2 - 2
Алгоритм Берлекемпа-Месси, реализованный на Wolfram
<<FiniteFields`
BM[s_,fld_]:=Module[
{CD=fld[{1}],CDA=fld[{1}],L=0,\[Delta],\[Delta]A=fld[{1}],\[Lambda]=1,TD,table={}},
table = Append[table,{"n","s^(n+1)","\[Delta]","C(D)","2L<=n","C^*(D)","L","\[Delta]^*","\[Lambda]"}];
table = Append[table,{"","Initial loading:", "", "1", "","1", "0","1","1"}];
For[n=0,n<Length[s],n++,
sn = s[[;;n+1]];
\[Delta] = PadRight[CoefficientList[CD,D],L+1].PadRight[Reverse[sn],L+1];
table = Append[table,{n,StringJoin[ToString[If[FieldInd[#]==-Infinity,0,If[FieldInd[#]==0,1,Superscript[\[Alpha],FieldInd[#]]]],TraditionalForm]&/@sn],ToString[If[FieldInd[\[Delta]]==-Infinity,0,If[FieldInd[\[Delta]]==0,1,Superscript[\[Alpha],FieldInd[\[Delta]]]]],TraditionalForm]}];
If[FieldInd[\[Delta]]==-Infinity,
\[Lambda] += 1;
table[[n+3]] = Join[table[[n+3]],{"","","","","",\[Lambda]}],
TD=CD;
CD-=\[Delta]/\[Delta]A*D^\[Lambda]*CDA;
If[2*L<=n,
L=n+1-L;
\[Lambda] = 1; \[Delta]A = \[Delta];
CDA = TD;
table[[n+3]] = Join[table[[n+3]],{StringJoin[ToString[If[FieldInd[#]==-Infinity,0,If[FieldInd[#]==0,1,Superscript[\[Alpha],FieldInd[#]]]],TraditionalForm]&/@CoefficientList[CD,D]],"+",StringJoin[ToString[If[FieldInd[#]==-Infinity,0,If[FieldInd[#]==0,1,Superscript[\[Alpha],FieldInd[#]]]],TraditionalForm]&/@CoefficientList[CDA,D]],L,ToString[If[FieldInd[\[Delta]A]==-Infinity,0,If[FieldInd[\[Delta]A]==0,1,Superscript[\[Alpha],FieldInd[\[Delta]A]]]],TraditionalForm],\[Lambda]}],
\[Lambda] += 1;
table[[n+3]] = Join[table[[n+3]], {StringJoin[ToString[If[FieldInd[#]==-Infinity,0,If[FieldInd[#]==0,1,Superscript[\[Alpha],FieldInd[#]]]],TraditionalForm]&/@CoefficientList[CD,D]],"-","","","",\[Lambda]}];
];
];
];
Return[{table,CD,L},Module]
];
ISSN 2542-0356
Следуй за Полисом
Оставайся в курсе последних событий
Лицензия
Если не указано иное, содержание этой страницы доступно по лицензии Creative Commons «Attribution-NonCommercial-NoDerivatives» 4.0, а примеры кода – по лицензии Apache 2.0. Подробнее см. Условия использования.