Форум программистов, компьютерный форум, киберфорум
Теория и практика программирования
Войти
Регистрация
Восстановить пароль
 
Незнайка
26 / 11 / 2
Регистрация: 14.10.2016
Сообщений: 373
Записей в блоге: 2
1

Синтаксис какого языка программирования наиболее читабелен?

13.10.2017, 16:07. Просмотров 433. Ответов 6
Метки нет (Все метки)

Здравия всем!

Пытаюсь тут ЯП пилить, но вот проблема, не могу подобрать синтаксис. Скажите, синтаксис какого языка программирования, по вашему мнению, самый читабельный?

Кликните здесь для просмотра всего текста
Вот я тут пораскинул немного ЯПами, взял кое-что из питона, кое-что из ruby:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
using io              // Импорт всячины из стандартных библиотек
using file, xml, ini  // API для работы с файлами, форматом xml и форматом ini
 
enum PLATFORM: WIN32, WIN64,  // Енумераторы объявляются после двоеточия, название не обязательно, можно записывать в строку
    ELF32, ELF64,             // переносить и продолжать в стрку
    MAC32,                    // переносить и писать по одному
    MAC64                     // Запятой после енумеротора нэту - енумерация закончена, end не нужен
 
enum: TRUE, FALSE, UNDEFINED // Пример енумератора без названия
 
struct TestStructure: int a long b, c, d short e, // стркутуру можно определять в строку так
        f, g                                      // или через строку так
    char[] str1                                   // или так (не инициализированный массив)
    char[256] str2                                // просто демонстрация инициализированного массива (по дефолту все элементы массива - нули)
init:                                             // далее - инициализация экземпляров структуры, двоеточие обязательно
    tse1                                          // Если просто объявляется экземпляр двоеточие не нужно
    tse2:                                         // Но если нужно инитить некоторые его переменные - необходимо
        a = 0,                                    // Инитить можно на новой строке
        b = c = d = 0,                            // Подряд
        e(0),                                     // Си-подобное определение переменной
        str1 = new char[256]                      // Выделение памяти под массив при создании экземпляра структуры
    tse3 tse4: a = 0 tse5: str1 = new char[256]   // Ну и, можно всё это сделать в линию
end // А как ещё конец структуры узнать? Мой лексер пробелы не считает
 
int main (string[] arguments): // питон-лайк, только тип возвращаемого значения указывается явно. А можно и неявно, any в помощь
    function_with_constants_in_low(read + write + binary + rewrite_if_exists + create_if_not_exists) // Индивидуальные для каждой функции константы
    
    // var == auto
    var my_file = file ("test.txt", binary)
    io.writeln (mi_file.get_text)
    
    // аналогично
    io.writeln (file ("test.txt", binary).get_text)
    
    if all in shit (file_not_found) io.writeln ("Exception: File not found") // Вместо try-catch
    else io.writeln ("OK!")
    
    test_class.foo() // Вызов функции из класса
    test_class.variable = 0; // Доступ к переменной класса
    
    io.writeln (test_class.foo(1))   // OUT: 2
    io.writeln (test_class.foo("1")) // OUT: 11
    
    int a = test_class.foo(1)     // OK, a == 2
    short a = test_class.foo(1)   // OK, a == 2
    long a = test_class.foo(1)    // OK, a == 2
    any a = test_class.foo(1)     // WARNING, но возвращаетя по стандарту int, a = 2
    string a = test_class.foo(1)  // OK, a == "2", автоконверт
    bool a = test_class.foo(true) // a == true
    
    int a = test_class.foo('1')    // OK, работа с кодом символа
    short a = test_class.foo('1')  // OK, работа с кодом символа
    long a = test_class.foo('1')   // OK, работа с кодом символа
    any a = test_class.foo('1')    // WARNING, но возвращаетя по стандарту int, работа с кодом символа
    string a = test_class.foo('1') // WARNING, a == "КОД_СИМВОЛА + 1", автоконверт
    bool a = test_class.foo(false) // a == false
    
    int a = test_class.foo("1")    // ERROR: int != string
    short a = test_class.foo("1")  // ERROR: short != string
    long a = test_class.foo("1")   // ERROR: long != string
    any a = test_class.foo("1")    // ERROR: int (any) != string
    string a = test_class.foo("1") // OK, a == "11"
    bool a = test_class.foo(true)  // a == true
    
    // Ассемблерные вставки
    
    asm intel // fasm с поддержкой макросов, просто переписывается в исходник на fasm'е
        mov eax, 0
    end
    
    asm att   // синтаксис AT&T переводится в fasm, макросы всё ещё поддерживаются, но их синтаксис стандартный
        movl $0x0, %eax
    end
end
 
class test_class:
    public int variable               // Правила объявления переменных в классах такие же, что и везде в языке
    
    public void foo ()                // Пустая функция
    public any  foo (any)             // Функция, которая принимает и может возвратить переменную любого типа. При компиляции создаётся несколько вариантов этой функции
    
    public any  foo (bool argument):  // А что делать, если тип аргумента bool? (Foo() == объявление, Foo(): == определение)
        return argument
    end
end
 
void test_class.foo ():   // или (void), если чел привык
    io.writeln ("foo1")
end
 
any test_class.foo (any): // Возвращает любое значение (все возсможные значения возвращаемых значений и аргументов определяются на этапе компиляции)
    return any + 1        // Универсальная функция, шаблоны уже не нужны?
end
 
// Пример функции с собственными константами
void function_with_constants_in_low (int flags):
    const:
        read = 0x1,
        write = 0x2,
        binary = 0x4,
        rewrite_if_exists = 0x8,
        create_if_not_exists = 0xF
    
    if flags mod read == 0
      io.write ("Flag \"read\" is enabled\n")
    
    if flags mod write == 0
      io.write ("Flag \"write\" is enabled\n")
    
    if flags mod binary == 0
      io.write ("Flag \"binary\" is enabled\n")
    
    if !(flags mod rewrite_if_exists)
      io.write ("Flag \"rewrite_if_exists\" is enabled\n")
    
    if !(flags mod create_if_not_exists)
      io.write ("Flag \"create_if_not_exists\" is enabled\n")
    
    return // Пустой ретурн в void функциях допускается
end
Норм? Читабельнее Си?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.10.2017, 16:07
Ответы с готовыми решениями:

С какого языка стоит начать обучение? С языка программирования Pascal?
Здравствуйте. Хотелось бы больше знать о компьютерной безопасности, в частности, о...

С какого языка лучше начинать изучение программирования?
Киньте ссылку на сайт с литературой и программами для изучения этого ЯП.

С какого языка программирования начать
Добрый день. Подскажите пожалуйста с какого языка программирования начать , в институте преподают...

C какого языка программирования начинать?
Советуют в основном Visual Basic и Pascal. бейсик мне не понравился, слишком визуальный. Может...

6
Модератор
2612 / 1794 / 396
Регистрация: 26.03.2015
Сообщений: 6,637
13.10.2017, 16:26 2
Цитата Сообщение от mkostoevr Посмотреть сообщение
А как ещё конец структуры узнать? Мой лексер пробелы не считает
По отступам
0
Незнайка
26 / 11 / 2
Регистрация: 14.10.2016
Сообщений: 373
Записей в блоге: 2
13.10.2017, 16:31  [ТС] 3
Shamil1, >Мой лексер пробелы не считает.

А для отсчёта отступов они (пробелы) нужны. Но мой лексер только разбивает текст на слова, пробельных символов не оставляет, это память нехило экономит, а переделывать это без сильной нужды западло

Добавлено через 42 секунды
Shamil1, а что насчёт читабельности? Какой язык по-вашему самый читабельный?
0
Модератор
2612 / 1794 / 396
Регистрация: 26.03.2015
Сообщений: 6,637
13.10.2017, 16:51 4
Цитата Сообщение от mkostoevr Посмотреть сообщение
а что насчёт читабельности? Какой язык по-вашему самый читабельный?
На читабельность влияют простота синтаксиса и лаконичность. Сложно выделить какой-нибудь один. У каждого свои недостатки.
0
26 / 31 / 14
Регистрация: 08.09.2017
Сообщений: 449
20.10.2017, 08:55 5
mkostoevr
Самый простой язык это QBasic. У него и синтаксис
самый простой. Turbo Pascal на порядок сложнее...
Но это вам выбирать.
0
2573 / 1165 / 152
Регистрация: 28.10.2011
Сообщений: 4,144
Записей в блоге: 6
22.10.2017, 23:55 6
У бейсика простой синтаксис. Но лучше брать за основу что-то современное, типа PureBasic, а не классический.
0
Фриланс Pascal/Delphi etc
64 / 73 / 16
Регистрация: 25.11.2016
Сообщений: 263
13.11.2017, 20:25 7
По мне так, самый читабельный синтаксис у Pascal.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.11.2017, 20:25

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

[V] Хорош ли синтаксис языка программирования V?
Создаю язык программирования для CGI и текстовых терминалов. Сайт www.vlang.ru. Ищу конструктивную...

С какого языка начать изучение программирования?
Прошу совета у опытных программистов) Стоит ли начинать с языка C?? К программированию не имею...

У какого языка программирования есть будущее?
Сейчас я пишу на VB 6. Плавно перехажу на VB .NET. Но один человек мне сказал что, лучше изучи C# -...

С чего начинать изучение программирования(с какого языка)
Добрый день!Меня интересует с чего начинать изучение программирования.Дайте совет нубу. Хочется...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.