
Мне понравился язык F# - потихоньку изучаю его. Кратко поясню: F# - это мультипарадигмальный язык программирования для платформы .Net, поддерживающий функциональное, императивное и объектно-ориентированное программирование. F# статически типизирован, т.е. информация о типах доступна уже на этапе компиляции, что обеспечивает большую надёжность программного кода. Кроме того, на F# можно писать скрипты! Эти скрипты не интерпретируются, а предварительно компилируются в памяти и уже откомпилированный код запускается на исполнение. За счёт этого скрипты, написанные на F# выполняются гораздо быстрее, чем скрипты, написанные на чистых скриптовых языках.
Сейчас меня интересуют именно скрипты, а не компилируемые приложения, написанные на том же F#. Я решил проверить следующее: поскольку скрипт, написанный на F# предварительно компилируется, то, теоретически, можно сделать так, чтобы скрипт выполнил всё что от него требуется и затем сам себя удалил! Ведь откомпилированный код уже не связан с исходным текстовым fsx-файлом скрипта. Как показала практика - моё предположение оказалось верным. Это приятно радует и будет мною востребовано в механизмах обновления моих программ.
Привожу пример скрипта, написанного мною в качестве теста. Обратите внимание на то, что работа скрипта начинается с того, что он совершенно спокойно сам себя удаляет, и уже затем выполняет всю требующуюся от него работу:
Этот код нужно сохранить в текстовый файл с расширением fsx. Запустить его можно либо из Проводника, выбрав из контекстного меню пункт "Run with F# Interactive...", либо из консоли, запустив программу fsi.exe и передав ей в качестве параметра имя нашего fsx-файла. Результат выполнения кода у меня такой:
Как видим, скрипт благополучно удалил сам себя, после чего ещё и выполнил всю требующуюся от него работу. На мой взгляд это очень удобно! Возможно, что удалять себя могут и скрипты, написанные на др. языках, но поскольку я изучаю F#, то меня приятно радует, что именно в нём такая возможность присутствует.
Комментарии
4 комментария(ев)Дата: СБ, 22/10/2011 - 06:36
Ничего себе... Если с помощью этого языка можно писать самоликвидируюшие скрипты, то это будет конец лишь для меня: буду учить этот язык
Дата: СБ, 22/10/2011 - 15:56
в каком смысле?
Дата: СБ, 22/10/2011 - 14:56
Скрипты в принципе нормально с файловой системой работают. Самоликвидироваться можно так:
CreateObject("Scripting.FileSystemObject").DeleteFile WScript.ScriptFullName,TrueЕсли с проверкой, то, например, вот так:
Set fso = CreateObject("Scripting.FileSystemObject") fso.DeleteFile WScript.ScriptFullName,True If fso.FileExists(WScript.ScriptFullName) Then MsgBox "Файл " & WScript.ScriptFullName & " не удален", vbExclamation Else MsgBox "Файл " & WScript.ScriptFullName & " удален", vbInformation End If Set fso = NothingДата: СБ, 22/10/2011 - 22:52
Значит интерпретируемые скрипты тоже это умеют (во всяком случае VBScript) - запомню на будущее. Спасибо.
Одним из "плюсов" в F# для меня является и то, что с помощью одного языка можно писать как скрипты, так и обычные компилированные приложения. Поскольку F# - это .Net-язык, то он может использовать всю мощь .Net Framework, т.к. эта платформа для него "родная", причем использовать эту мощь можно в полной мере не только в компилированных программах (что само собой разумеется) но и в скриптах: к примеру - GUI на WPF.