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

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

13.10.2017, 16:07. Просмотров 287. Ответов 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
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2017, 16:07
Ответы с готовыми решениями:

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

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

Выбор языка программирования для разработки среды программирования
Возникла мысль о создании ЯПа. Ныне популярные ЯПы не универсальны, либо универсальны, но с ...

с какого языка мне начинать?
Скажите пожайлуста, просто я тока начинающий программист, с какого языка мне начинать?:good:

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

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

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

Добавлено через 42 секунды
Shamil1, а что насчёт читабельности? Какой язык по-вашему самый читабельный?
0
Shamil1
Модератор
2318 / 1608 / 362
Регистрация: 26.03.2015
Сообщений: 5,877
13.10.2017, 16:51 4
Цитата Сообщение от mkostoevr Посмотреть сообщение
а что насчёт читабельности? Какой язык по-вашему самый читабельный?
На читабельность влияют простота синтаксиса и лаконичность. Сложно выделить какой-нибудь один. У каждого свои недостатки.
0
йот
25 / 30 / 14
Регистрация: 08.09.2017
Сообщений: 449
20.10.2017, 08:55 5
mkostoevr
Самый простой язык это QBasic. У него и синтаксис
самый простой. Turbo Pascal на порядок сложнее...
Но это вам выбирать.
0
locm
2228 / 985 / 125
Регистрация: 28.10.2011
Сообщений: 3,320
Записей в блоге: 6
22.10.2017, 23:55 6
У бейсика простой синтаксис. Но лучше брать за основу что-то современное, типа PureBasic, а не классический.
0
ILinker
Фриланс Pascal/Delphi etc
64 / 73 / 16
Регистрация: 25.11.2016
Сообщений: 263
13.11.2017, 20:25 7
По мне так, самый читабельный синтаксис у Pascal.
0
13.11.2017, 20:25
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2017, 20:25

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

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

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


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

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

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