Warning: array_keys() [function.array-keys]: The first argument should be an array in /home/cyberblogger/data/www/cyberblogger.ru/wp-includes/widgets.php on line 1044 Блог .Net программиста
Наконец то немного освободился от работы и появилось немного свободного времени. За это время снес дебиан, достала проблема с зависимостями и перепробовал кучу дистрибутивов от Slackware до той же OpenSuse, которая понравилась соседнем товарищу из соседнего . Мой же выбор пал на Arch Linux. Что могу сказать, установка конечно потруднее той же OpenSuse, но 2 дня настройки системы и результатом не нарадуюсь.
Сегодня полностью определился с дистрибутивом, им оказался Debian. Установка прошла довольно таки безболезненно. Буду разбираться и походу писать здесь о задачах и их решении которые будут возникать с позиции новичка в этом деле. Надеюсь кому-нибудь это поможет.
Сегодня хотел добавить себе аватар в блоге. Захожу на страницу с плагинами, выбираю нужный, нажимаю редактировать вылетает ошибка - 500 Внутрення ошибка сервера.
Да, действительно вам не показалось (думал никогда такого не скажу), но все таки - .Net программист перешел на Linux. Сделать этот выбор меня заставил великий и ужасный WINDOWS. Не буду перечислять достоинства или недостатки windows, однако после долгих размышлений понял что это не моя операционная система. Вот как-то так, сейчас занимаюсь тем что, выбираю дистрибутив как выбиру обязательно отпишусь.
Практически в каждом языке программирования синтаксис реализует в том или ином виде условный оператор, для реаилзации разветвленных алгоритмов. В F# синтаксис условного оператора довольно похож на Pascal, но семантика у них разная.
Синтаксис условного оператора:
if expr1 then expr2 else expr3;;
Где exprN какаое - то выражение. Причем тип выражения expr1 - bool, а выражения expr1 и expr2 должны быть одного типа.
Например:
if 2 = 1 then 0 else 2;;
-:int = 2
или
if 2 = 1 this “0″ else “2″;;
-:string = “2″
Ветка else, как и во многих языках может быт опущена, в этом случае будет подставлено значение по умолчанию else (), то есть выражение expr2 должно быть типа unit. Также можно заметить главное отличае условного оператора в F# от императивных языков в том, что if возвращет не обязательно булевое значение. Значение возвращаемое оператором if зависит от проверяемых выражений.
Одной из главных особенностью в F# на мой взгляд является то, что в этом языке не требуется явное объявление типов переменных, компилятор сам распазнает какой тип должна иметь та или иная сущность. Конечно же это не означает, что явное объявление типов запрещено. Вобще в F# существует 2 вида типов:
Изменяющиеся типы
Неизменяющиеся типы
В первом случае при объекты могут быть изменены, а при изменении объектов второго типа создается новый экземпляр. F# поддерживает почти все типы данных CTS:
bool
byte
sbyte
char
decimal
double
float
int
int16
int32
int64
string
А также bignum для рациональных чисел произвольного размера, bigint для целых чисел произвольного размера.
F# строго типизированный язык, и хотя вам не обязательно объявлять тип значения, вы должны следить за типизацией иначе компилятор выдаст ошибку. Даже в таких несложных примерах, где казалось бы компилятор должен проглотить несоответсвие типов, как например это делает C#:
>1+1.0;;
error FS0001: The type ‘float’ does not match the type ‘int’.
Числа с плавающей точкой имеют специальные значения для бесконечных величин - infinity, и для неопределенного результата - nan. Также F# включает набор основных операций над числами с
плавающей точкой:
ceil - округлени числа в болшую сторону
floor - округление числа в меньшую сторону
sqrt - квадратный корень
exp - экспонента
log - натуральный логарифм
log10 - логарифм с основанием 10
sin,cos,cosh,sinh,tan,tanh - тригонометрические функции
>sin(1.58932);;
val it:float = 0.9998284417
>ceil 3.5;;
val it:float = 4.0
>floor 3.5;;
val it:float = 3.0
Булевый тип. Значение типа bool принадлежит множеству из 2 элементов: true и false. Основные операторы:
not - отрицание
&& - логическое и
|| - логическое или
>true && false;;
val it: bool = false
>not true || (true && true);;
val it:bool = true
Тип Unit
Тип Unit определяет множество всего из одного элемента значение которого (). Иными словами функции результат которых равен () соответствуют понятию процедуры, т.е аналог ключевог слова void в С++.
Итак приступим к изучению. Для начала нам необходимо бдет скачать компилятор для F# -.
F# - единствнный функциональный язык семейства языков платформы .Net, то есть базовой концепцией в отличии от императивных языков является функция в ее математическом понимании. Синтаксис F# построен на математической нотации, а программирование больше похоже на алгебру нежели на описание конкретных действий на как мы привыкли в императивном стиле. Вобще фнкциональное программирование огромная тема и для того что бы ее разобрать, одним постом не отделаться, кому интересно воспользуйтесь помощью либо специализированной литературы. Давай те побыстрее перейдем к практике.
После того как скачали компилятор, разархивируем его. В папке bin особый интерес для нас представляют два файла:
Компилятор командной строки fsc.exe – с его помощью можно компилировать исполняемые файлы и сборки в командном режиме.
Интерпретатор fsi.exe (F# Interactive). Запустив его, вы сможете вычислять F#-выражения в интерактивном режиме и получать результат:
Режим интерпретатора F# занимается тем, что вычисляет каждое выражение и выводит результат. Так же можно скачать дополнение к VS 2008 - fs.msi и программировать на F# в студии.
Ни одно введение в язык программирования не обходится без программы «Hello, World». F# не станет исключением.
Свежие комментарии