Sodium: Türkiye'nin Programlama Dili
  • Sodium Home Page
  • Getting Started
    • Examples
      • Hello World Example
      • Datalist & Select Element Usage
  • Installation & Configuration
  • Frequently Asked Questions
  • How to
    • How to: use Recordset variable and to_json function for populating a tree node
    • How to: get selected tree node id
    • How to: create master detail relationship between data blocks
    • How to: use data list element for populating select elements
    • How to: define a lookup element for a select element
    • How to: use database sequence in data block element
  • Contributers
  • Roadmap
  • About Me
  • Version History
    • Change Log
    • Things To Do
    • Known Issues
  • LANGUAGE REFERENCE
    • Program Structure
      • Form File
      • Code Behind File
      • Controller File
    • Built-in Functions
      • Sodium Built-in Functions
        • Database Related Functions
          • commit
          • rollback
          • delete
          • create_postgresql_connection
          • create_oracle_connection
          • create_mysql_connection
          • get_database_type
          • get_database_name
          • run_sql_file
          • set_active_database_connection
        • REDIS Functions
          • create_redis_connection
          • close_redis_connection
          • (redis-variable-name).set
          • (redis-variable-name).get
          • (redis-variable-name).del
          • (redis-variable-name).ping
          • (redis-variable-name).incr
          • (redis-variable-name).incrBy
          • (redis-variable-name).decr
          • (redis-variable-name).decrBy
          • (redis-variable-name).strlen
          • (redis-variable-name).append
        • Other Functions
          • disable_column
          • enable_column
          • hide_block
          • hide_column
          • message
          • populate_datalist
          • prompt
          • refresh_block
          • show_block
          • show_column
          • show_page
          • populate_tree
          • to_json
          • refresh_tree_node
          • set_datablock_property
      • Built-in String Functions & Operands
        • instr
        • strlen
        • Concatanation Operator
        • replace
        • substr
        • The "sizeof" Operator
        • Like & Not Like Operators
      • File IO functions
      • Date/time Functions
    • Built-in Triggers
      • "item_modified" trigger
      • "connection_not_found" trigger
      • "page.access" trigger
      • "page_load" trigger
      • "post_query" trigger
      • "row_selected" trigger
      • "button_item_clicked" trigger
      • "pre_insert" Trigger
      • "pre_delete" Trigger
      • "pre_update" Trigger
      • "post_insert" Trigger
      • "post_delete" Trigger
      • "post_update" Trigger
      • "tree_node_expanded" Trigger
      • "tree_node_selected" Trigger
      • "user_session_end" trigger
    • TAGs
      • Data Block
        • Data Block: Form View Mode
        • Data Block: Grid View Mode
        • Data Block: Mix View Mode
      • Control Block
      • Data List
      • Tree Element
      • Table TAG
      • Inputs
        • Text Item
        • Radio Item
        • Select Item
        • Checkbox Item
        • Button Item
        • Image Item
        • Textarea Item
        • Magic Buttons
    • Native SQL support
    • Lexical Elements
      • Identifiers
      • Keywords
      • Constants
        • The Null Statement
        • String Constant
      • Operators
      • Separators
      • White Space
      • Variables
        • Variable Type: int
        • Variable Type: char
        • Variable Type: bool
        • Local variables
        • Page variables
        • Session variables
        • Predefined Variables
          • :Session.authenticated
          • :Session.user
          • :Session.Id
          • :Session.user
          • :Row.Id
      • Functions
        • Function Declarations
        • Calling Functions
        • Function Parameters
        • Recursive Functions
      • Statements
        • The "if" Statement
        • The while Statement
        • The do Statement
        • Code Blocks
        • The break Statement
        • The return Statement
      • Expressions And Operators
        • Expressions
        • Assignment Operators
        • Arithmetic Operators
        • Comparison Operators
        • Logical Operators
        • Function Calls as Expressions
        • Operator Precedence
        • Order of Evaluation
      • Escape Character
    • CSS Themes
    • Scopes
    • Connection
      • Active Database Connection
      • Connection Types
        • Database Connections
        • REDIS Connection
  • Development
    • IDE
    • Debugging
  • SODIUM DEVELOPMENT
    • Sodium Development Home Page
    • Getting Started
      • Sodium Architecture
      • Development Environment
        • Source Code
        • Applications Required
        • Compiling C Projects
        • Compiling NodeJs Project
        • Troubleshooting
Powered by GitBook
On this page
  • What is Soduim?
  • What is the Motivation To Develop a New Software Language ?
  • How does Sodium works ?
  • Components

Was this helpful?

Sodium Home Page

Türkiye'nin Programlama Dili

NextGetting Started

Last updated 5 years ago

Was this helpful?

What is Soduim?

Sodium is a new Domain-Specific Language (DSL) especially designed for creating/developing state of the art web based business applications. It has been under development at the moment but ready to be evaluated by developers.

Frontend developer, C developer, database developer etc. are needed. If you want be a contributer, please contact. ().

What is the Motivation To Develop a New Software Language ?

  • Specially tailored for web based CRUD application development Current software development languages (php, asp, jsp, asp.net, etc) and frameworks (JSF, AngularJS, ExtJs) are not solely designed for CRUD application. They are general-purpose development tools. If you ;

    • need to develop just a web based CRUD application (not device driver, game, etc, a dll or exe),

    • have limited time for coding,

    • do not want to spend time to

      • learn frameworks/libraries/third party add-ons etc

      • learn some advanced topics like transaction management, dependency injection, persistence, object-relational mapping etc.

      • upgrade frameworks/libraries/third party add-ons etc

      • make configuration You should try Sodium.

  • You can write SQL commands/scripts in code behind file as a first class native language commands. Unlike LINQ, you do not need to learn a special syntax for SQL commands. All syntax are accepted if it is a valid for database server. For more information . Example:

void button_clicked() {
 
    /* Select statement */
    rsCounties = select county_name as label,
                        county_id as value
                 from
                        htsql.counties
                 order by
                        county_name;
    if (rsCounties) then
        message(rsCounties.label);
    end if;
 
    /* Insert statement */
    insert into hr.deps (DEP_ID, DEP_NAME) values (htsql_test.nextval, :depname);
 
    /* Update statement */
    update hr.deps
    set
        dep_name = 'HR'
    where
        dep_name like '%'|| :col || '%';
 
    /* Delete statement */
    delete
        hr.deps
    where
        dep_name = :dep_name;
 
    /*  Sub query */
    delete hr.emps
    where  dep_id in (select dep_id from deps where region_id like '%' || :param || '%');
 
    /* PL/SQL Anonymous block */
    begin
        for i in (select * from hr.emps e where e.retired = 'F') loop
            calculate_salary(i.emp_id);
        end loop;
    end;
}
  • Server and Client Side support Current web based languages/frameworks are designed to run either on server or client. Sodium is designed to run on both. All things are handled Sodium engine transparently.

  • No dependency All features written on this list are provided without third-party plug-ins, frameworks, code libraries, etc.

  • Easy to learn On server: You do not need to learn some advanced topics/libraries such as Object Relational Mappings (ORM) tools, dependency injection, transaction management, user interface libraries, design patterns, etc. On client: No java script knowledge required, no CSS knowledge required, No library/framework required (JQuery, AngularJS, ExtJs, bootstrap for mobile support)

  • Native cached memory database support

  • Easy to maintain All requirements are handled in a standard way so developers easily find the code blocks to make corrections.

  • Quick and Easy Installation No database repository needed No ODBC or OLE DB installation/configuration needed.

  • Basic HTML knowledge for visual design No special IDE needed. Works with WYSWYG tools/applications.

  • Built-in AJAX support

  • Built-in mobile support

  • Fast Sodium is especially designed for fast response time. Therefore,

    • it is developed using C language as a native Executable application.

    • Sodium does not use ODBC, OLE DB or other third party frameworks. It makes oci.dll calls for Oracle, libpq.dll calls for Postgresql and libmysql.dll for MySql in order to fast access.

  • Web based

  • Safe

  • Absolutely free

  • Support all major browsers

  • No character encoding problem. Works well with database/client language/territory settings

How does Sodium works ?

Components

  • SodiumServer.exe:

    64bit Http Server

  • SodiumDebugger.exe:

    64bit Windows Native Debugger especially designed for Sodium

  • DBInt.dll:

    Sodium-To-RDBMS generic interface

    • DBInt-Oracle.dll

      DBInt implementation for Oracle

    • DBInt-Postgresql.dll

      DBInt implementation for PostgreSql

    • DBInt-MySql.dll:

      DBInt implementation for MySql

  • SodiumExtension.dll:

    Sodium language Http Server plug-in

  • SodiumShared.dll:

    Shared code repository for all modules listed above

Whenever a *.frmx file request (with frmx extension) has been made to the Http Server (SodiumServer.exe), It delivers that request to the Sodium Server plug-in (SodiumExtension.dll). Sodium plug-in process the request and response accordingly.

Supported Browsers

Supported Databases (RDBMS)

Supported In-Memory Databases

Supported Operation Systems

About Me
Native SQL support
Native SQL support