Язык программирования Cangjie собственной разработки Huawei уже здесь! Новый язык разработки приложений Hongmeng, производительность лучше, чем у Java, Go, Swift
Язык программирования Cangjie собственной разработки Huawei уже здесь! Новый язык разработки приложений Hongmeng, производительность лучше, чем у Java, Go, Swift
автор | Тина, Фангфанг

На прошедшей сегодня конференции разработчиков Huawei (HDC 2024) наконец официально был анонсирован внутренний независимый язык программирования Huawei Cangjie, который долгое время разрабатывался внутри компании!

С появлением «Всеобщего Интернета» и эпохи интеллекта форма программного обеспечения претерпит огромные изменения. С одной стороны, области мобильных приложений и мобильного Интернета по-прежнему активно стимулируют инновации в области взаимодействия человека и компьютера, совместной работы устройств, интеллекта и безопасности. С другой стороны, искусственный интеллект также стимулирует эволюцию программного обеспечения в направлении интеллекта. совместная работа на устройствах и облаках и другие направления. Разработка прикладного программного обеспечения в соответствии с новыми технологиями и новыми сценариями выдвинула новые требования и задачи для языков программирования.

Являясь современным языком программирования для разработки приложений для всех сценариев, Cangjie Programming Language стремится создавать возможности для разработчиков за счет интеграции современных языковых функций, комплексной оптимизации компиляции и реализации во время выполнения, а также готовой поддержки цепочки инструментов IDE. опыт разработки и отличная производительность программы.

В настоящее время при разработке собственных приложений Hongmeng широко используется язык ArkTS, который поддерживает декларативный пользовательский интерфейс, а также однократную разработку и многостороннее развертывание. Будучи ориентированным на будущее языком программирования нового поколения, язык Cangjie в настоящее время завершил разработку и реализацию и выпустил предварительную версию для разработчиков. В будущем он будет развиваться вместе с ArkTS, чтобы предоставить разработчикам собственных приложений Hongmeng чрезвычайно эффективный опыт разработки.

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

По общедоступным данным, языками программирования, используемыми китайскими разработчиками, являются в основном Java, JavaScript, Python, HTML, SQL, C++ и др.

Эти основные языки программирования контролируются иностранными производителями и научно-исследовательскими институтами. Высокий уровень глобального развития языков программирования в основном сосредоточен в Европе и США. Дания является одним из представителей. Орхусский университет в Дании всегда имел традицию изучения языков программирования, и здесь появились такие личности, как Ларс Бак, автор Dart, и Бьёрн Страуструп, автор C++. Другие европейские страны также внесли важный вклад, например, Гвидо ван Россум из Нидерландов, который разработал Python, Никлаус Вирт из Швейцарии, который изобрел серию Паскаля и Модулы, и Мартин Одерски из Германии, который разработал Scala. Котлин произошел от русского языка 099. Первоначально это исследование было конфиденциальным научным исследовательским проектом Советского Союза. Название Котлин происходит от острова недалеко от Санкт-Петербурга. Кроме того, в Японии есть Ruby, в Бразилии — Lua, а в Китае почти нет.

Стоит отметить, что в нынешней сложной международной ситуации большинство основных языков программирования могут оказаться под угрозой отключения. Например, в Java, которой пользуется довольно много людей, на самом деле доминирует Oracle, а такие компиляторы, как OpenJDK, строго контролируются американскими компаниями, что создает более высокие риски. Ранее Google использовал 37 API-интерфейсов Java без разрешения при разработке Android, в общей сложности около 11 500 строк кода. С тех пор компания была вовлечена в десятилетнюю судебную тяжбу с Oracle. Это продолжалось до 2021 года. что суд США изменил свое решение против Google. Использование Java API является добросовестным. Другим примером является то, что язык Go имеет открытый исходный код от Google. В настоящее время большая часть основной команды разработчиков все еще находится в Google, и существуют определенные риски. C/C++, которым руководит швейцарский комитет ISO, представляет собой относительно низкий риск.

Кроме того, если посмотреть на ведущие крупные компании отрасли, они внедрили языки программирования. Например, такие языки, как Go и Dart, которые Google инвестировал в человеческие исследования и разработки, а также язык Swift с открытым исходным кодом от Apple, нацелены на создание экологических входов. и создание экосистемы разработчиков.

Учитывая два вышеуказанных фактора, действительно необходимо разработать язык программирования самостоятельно, но создать язык программирования непросто. В компьютерной области существует множество отраслей науки, включая искусственный интеллект, компьютерное зрение, машинное обучение и обработку естественного языка. В дополнение к этому существуют системные предметы, охватывающие компьютерную архитектуру, сети, безопасность, базы данных и языки программирования. Среди них очень мало исследователей языков программирования. Например, лучшая конференция PLDI собирает всего около 77 статей в год, тогда как ведущие конференции в области искусственного интеллекта могут собирать тысячи статей.

Курсы в области языков программирования крайне сложны. В Китае практически нет соответствующих книг и курсов, а учебные материалы практически пусты. Основными учебниками для обучения в этой области являются «Типы и языки программирования» и «Практические основы языков программирования». Китайская версия «Типов и языков программирования» больше не издается.

С 1960-х годов языки программирования были жемчужиной вычислительной техники: 40% лауреатов премии Тьюринга были представителями языков программирования. Видно, что эта область очень сложна, настолько сложна, что, пока есть определенный прорыв, можно выиграть премию Тьюринга.

В целом проектирование и разработка языка программирования — это сложный и системный проект, требующий долгосрочных инвестиций.

Возьмем, к примеру, Java. Языковая группа была создана в 1991 году. Лишь после выпуска виртуальной машины в 1999 году открытый исходный код вступил в стадию зрелости языка в 2006 году. Он все еще расширяет области применения и совершенствует возможности языка.

Другой пример — самостоятельно разработанный язык Apple. В первые годы Стив Джобс использовал Objective-C. В 2011 году он начал разработку Swift из-за требований производительности, безопасности и применимости. Крис Латтнер самостоятельно завершил базовую архитектуру. , а затем принес его с собой. Команда завершила разработку синтаксиса, компилятора, среды выполнения, фреймворка, IDE и документации, и через 4 года он был официально выпущен. Затем от официального запуска до выпуска стабильной версии 5.0 в 2019 году прошло еще 5 лет.

Создание языка программирования занимает много времени и сопряжено с большими трудностями. В настоящее время в Китае не существует крупномасштабного коммерческого языка программирования, разработанного самостоятельно. Отечественных языков программирования также очень мало. Есть только вогнутый язык, созданный энтузиастами языка Go, язык Go+, основанный на расширении языка Go, язык Yi, использующий китайский для написания программ, и популярный в настоящее время язык. Мун Бит.

Именно из-за слабой основы развития индустрии программного обеспечения Министерство промышленности и информационных технологий в качестве ключевой задачи повышения уровня поддержки индустриальной основы в 14-й пятилетке включило самостоятельную управляемость языков программирования.

Основываясь на желании построить экосистему разработчиков и независимом контроле над языками программирования, компания Huawei в 2019 году запустила план разработки языка программирования Cangjie. После пяти лет непрерывной доработки компания улучшила совершенство языка, экосистемы и инфраструктуры, и теперь наконец-то было официально объявлено.

Позиционирование и конкурентоспособность языка программирования Cangjie

Cangjie разработан как современный язык программирования для разработки приложений для всех сценариев, с упором на эффективное программирование, безопасность и надежность, простой параллельный доступ, отличную производительность и гибкое расширение.

При проектировании команда Cangjie нашла компромисс между безопасностью, простотой использования и производительностью.

При проектировании языка мы не можем идеально удовлетворить все требования одновременно. Например, такие языки системного программирования, как C, Rust и C++, обладают отличной производительностью, но эффективность их разработки не так уж высока. Языки динамических сценариев, такие как JS, обладают высокой эффективностью разработки, но их производительность немного низка. Такие языки, как Kotlin, Java, Go и Swift располагаются между первыми двумя и представляют собой статически типизированные языки, ориентированные на развитие бизнеса.

Cangjie также выбрал это центральное позиционирование и был разработан как язык с функциями автоматического управления памятью, статической типизацией и разработкой приложений. С точки зрения эффективности Цанцзе фокусируется на «простом синтаксисе, низком уровне шума и простоте расширения для данной области». Что касается производительности, Cangjie фокусируется на «вертикальной интеграции, масштабируемой производительности, стабильности и предсказуемости». Что касается безопасности, Cangjie фокусируется на «безопасности режима по умолчанию и расширенных ограничениях безопасности во время компиляции».

В настоящее время предпочтительные языки есть как в операционных системах Android, так и в iOS. Мы знаем, что Android — это операционная система с открытым исходным кодом для мобильных устройств, возглавляемая Google. В 2019 году Google объявила, что Kotlin стал предпочтительным языком для разработчиков приложений Android.

А Swift — предпочтительный язык для разработки приложений для iOS. В мире мобильных операционных систем Apple сталкивается с жесткой конкуренцией со стороны Android. Появление Swift снизило порог разработки для iOS, что облегчило присоединение большего количества разработчиков к экосистеме iOS. Для Apple это означает доступ к большему количеству разработчиков, которые могут помочь платформе iOS процветать.

Позиционирование этих двух языков такое же, как и у Cangjie, между языками динамических сценариев и языками системного программирования. Поэтому мы смело предполагаем, что Цанцзе также очень подходит для разработки приложений в Хунмэне.

На самом деле изначально у Swift было грандиозное видение, и его создатель Ратнер однажды сказал в интервью: «С самого начала мы создавали Swift как язык, который объединит мир». условие для того, чтобы язык стал широко популярным. Включая разработку Google Go, компания также надеется предоставить миру универсальный язык программирования. То же самое относится и к позиционированию Cangjie. Согласно официальному представлению, это язык программирования нового поколения, ориентированный на «всесценарный» интеллект, с упором на собственный интеллект, естественные все сценарии, высокую производительность и надежную безопасность.

  • Родной интеллект:Цанцзеязык программирования Встроенный AgentDSL из среды программирования, реализующей естественный язык и язык программирование органической смеси. много Agent Сотрудничество упрощает символическое выражение, шаблоны можно свободно комбинировать и поддерживает разработку различных интеллектуальных приложений.
  • Рожденная полная сцена:Цанцзеязык Программирование использует облегченную масштабируемую среду выполнения и модульную многоуровневую конструкцию, обеспечивающую бесперебойную работу даже на устройствах с ограниченными ресурсами. В то же время он поддерживает полномасштабное расширение предметной области и метапрограммирование. eDSL Технология, которая может облегчить предметно-ориентированную декларативную разработку.
  • высокая производительность:Цанцзеязык программирование использует полный параллелизм GC,Потоки приложений работают более плавно,Более отзывчивый. Легкая конструкция потоков еще больше повышает производительность параллелизма.,Снижение затрат на разработку.
  • сильная безопасность:Цанцзеязык программирования Интегрируйте концепции безопасности в языковой дизайн,Помогите разработчикам сосредоточиться на бизнес-логике,Уменьшить возникновение уязвимостей безопасности,Осознайте концепцию «кодирование — это безопасность».

Кроме того, компилятор Cangjie и среда выполнения оптимизируют компиляцию из полного стека, включая интерфейс компилятора на основе высокоуровневой оптимизации компиляции CHIR (Cangjie HighLevel IR) (например, оптимизация цикла с учетом семантики, совместная работа серверной части с учетом семантики). оптимизация и т. д.), на основе внутренней оптимизации боковой компиляции (например, векторизация SLP, внутренняя оптимизация, InlineCache, оптимизация межпроцедурных указателей, оптимизация барьеров и т. д.), оптимизации на основе времени выполнения (например, облегченные блокировки, распределенная маркировка, параллельная трассировка Оптимизация и т. д.), серия оптимизаций позволяет Cangjie полностью использовать возможности процессора и обеспечивает отличную поддержку производительности приложений.

Язык Cangjie также реализует собственную упрощенную структуру среды выполнения. Благодаря модульной и иерархической структуре среды выполнения он определяет общедоступную объектную модель Cangjie и общие базовые компоненты среды выполнения. На основе общедоступной объектной модели он реализует память времени выполнения. управление, поддержка стека. Базовые возможности, такие как обработка исключений и межъязыковые вызовы, значительно сокращают необходимость проектирования избыточных объектов среди множества возможностей и оптимизируют объем времени выполнения. В то же время благодаря технологии загрузки пакетов по требованию сокращаются затраты памяти на избыточные пакеты, запускаемые приложениями Cangjie. Таким образом, для чувствительных к ресурсам устройств он занимает меньше ресурсов и более удобен для поддержки.

В тесте производительности компьютерного языка Benchmarks Game Cangjie добился очевидных преимуществ в производительности по сравнению с аналогичными языками в отрасли.

Также стоит упомянуть, что Cangjie также поддерживает ряд цепочек инструментов для разработки приложений, включая языковые службы (выделение, Lenovo), отладку (межъязыковая отладка, визуальная отладка на уровне потоков), статическую проверку, анализ производительности, управление пакетами, Генерация документов, инструменты Mock, среды тестирования, инструменты покрытия, инструменты Fuzz и интеллектуальные вспомогательные инструменты программирования еще больше улучшают опыт и эффективность разработки программного обеспечения.

Особенности языка Цанцзе

В настоящее время возможности языка Cangjie в основном завершены и могут соответствовать большинству сценариев разработки.

Как многопарадигмальный язык программирования, Cangjie поддерживает несколько парадигм, таких как функциональная, императивная и объектно-ориентированная, включая такие функции, как типы значений, классы и интерфейсы, дженерики, алгебраические типы данных, сопоставление с образцом и функции высшего порядка. Кроме того, Cangjie также поддерживает вывод типов, который может снизить нагрузку на разработчиков, связанных с аннотациями типов; благодаря ряду лаконичных и эффективных синтаксисов он может уменьшить избыточное написание и повысить эффективность разработки различных синтаксических сахаров и макросов, встроенных в поддержку языка; Разработчики создают абстракции предметной области на основе предметно-ориентированного языка (DSL) быстрой разработки Cangjie.

Дальше мы занимаемся функциональным программированием、Эффективный параллелизм、Межъязыковая совместимостьи Родной интеллект Чтобы узнать больше о Цанцзеязыкиз Основные технические характеристики。(Извлечено из официального документа Цанцзе: https://developer.huawei.com/consumer/cn/doc/openharmony-cangjie/cj-wp-abstract,Спецификация языка к И Цанцзе: https://developer.huawei.com/consumer/cn/doc/openharmony-cangjie/cj-lan-spec)

Функции — граждане первого сорта

Cangjie обеспечивает хорошую поддержку процедурного программирования, объектно-ориентированного программирования и функционального программирования, включая, помимо прочего, поддержку типов значений, классов и интерфейсов, обобщенных типов, алгебраических типов данных и сопоставления с образцом, а также первоклассных функций.

Функции в Cangjie можно использовать как обычные выражения, передавать как параметры, использовать как возвращаемые значения функции, сохранять в других структурах данных или присваивать переменной.

Язык кода:javascript
копировать
func f(x: Int) {
    return x
}

let a = f
let square = {x: Int => x * x} // lambda выражение

// Вложенное определение функции, к и функция как возвращаемое значение
func g(x: Int) {
    func h(){
        return f(square(x))
    }
    return h
}

func h(f: ()->Unit) {
    f()
}

let b = h(g(100))

Эффективный параллелизм: облегченная модель потоков

Поток Cangjie использует модель потока M:N, поэтому по сути это облегченный поток пользовательского режима, который поддерживает вытеснение и занимает меньше ресурсов памяти, чем потоки операционной системы.

Такая облегченная конструкция потоков не только снижает нагрузку на систему, но также позволяет разработчикам легко реализовывать тысячи или даже десятки тысяч одновременных задач без увеличения сложности программирования. Его основные преимущества включают в себя:

  • Простое параллельное программирование: оно не накладывает слишком много грамматических ограничений на разработчиков, пишущих параллельный код, что позволяет легко использовать потоки Cangjie и сосредоточиться на бизнес-обработке.
  • Уменьшение накладных расходов: поскольку накладные расходы на создание и переключение потоков пользовательского режима намного меньше, чем у традиционных потоков ядра, язык Cangjie может быстро создавать и уничтожать большое количество потоков пользовательского режима, что упрощает разработку приложений с высоким уровнем параллелизма.
  • Более высокие возможности параллелизма: язык Cangjie может обеспечить очень высокий уровень параллелизма благодаря модели потоков пользовательского режима, что делает его особенно подходящим для сценариев сетевых служб с интенсивным вводом-выводом и высоким уровнем параллелизма.
  • Снижение затрат на переключение контекста: в облегченной модели потоков,Переключение контекста происходит в пользовательском пространстве,Это позволяет избежать высоких затрат на традиционное переключение потоков, которое требует частого переключения между режимом ядра и пользовательским режимом. На языке цанцзе,Достижение эффективного параллелизма больше не является сложной и трудоемкой задачей. Разработчики могут создавать большое количество потоков пользовательского режима с помощью простого синтаксиса.,Не нужно беспокоиться об узких местах, характерных для традиционных моделей параллелизма. Предположим, у нас есть требование: нам нужно обрабатывать несколько сетевых запросов одновременно. На языке цанцзе,Этого можно легко добиться,Как показано в следующем коде:
Язык кода:javascript
копировать
func fetch_data(url: String) {
    let response = http_get(url)
    process(response)
}

main() {
    let urls = ["http://example.com/data1", "http://example.com/data2", ...]
    let futures = ArrayList<Future<Unit>>()
    for (url in urls) {
        let fut = spawn { fetch_data(url) }  // Создайте ветку Цанцзе для отправки сетевых запросов.
        futures.append(fut)
    }
    for (fut in futures) {  // Дождитесь завершения всех тем о Цанцзе.
        fut.get()
    }
}

В приведенном выше примере ключевое слово spawn используется для создания нового потока Cangjie, и каждый поток выполняет функцию fetch_data независимо. Среда выполнения языка Cangjie автоматически планирует эти потоки, и разработчикам остается сосредоточиться только на реализации бизнес-логики. Наконец, дождитесь завершения всех потоков Cangjie и получения результатов потока, чтобы гарантировать, что основной поток может получить все результаты синхронно.

Межъязыковая совместимость

Cangjie поддерживает взаимодействие с C, ArkTS/JS, Python и другими языками программирования и использует удобную парадигму декларативного программирования для достижения эффективного повторного использования и экологической совместимости с другими языковыми библиотеками.

Функция межъязыкового вызова очень полезна для реализации концепции «одного набора кода для многостороннего использования». Например, она изначально была разработана на языке C для встраиваемых устройств, JS для часов и Java для устройств. Мобильные телефоны Теперь вы можете использовать Cangjie для реализации кросс-платформенной разработки. Разрабатывайте в условиях устройств и нескольких языков, и если три языка находятся в одном коде, вы также можете выполнять некоторую отладку и позиционирование на нескольких языках, а также даже сделайте двусторонний предварительный просмотр между пользовательским интерфейсом и областью кода.

Возьмем в качестве примера совместимость языка C. Поскольку язык C слишком прост, чтобы вызвать угрозу безопасности, Цанцзе утверждает, что все функции, взаимодействующие с языком C, могут выполняться только в небезопасном контексте. Небезопасный контекст вводится с помощью ключевого слова unsafe. Ключевое слово unsafe может изменить блок кода (типом небезопасного выражения является тип этого блока кода) или изменить функцию.

Синтаксис определяется как:

Язык кода:javascript
копировать
unsafeExpression
: 'unsafe' '{' expressionOrDeclarations '}'
;
unsafeFunction
: 'unsafe' functionDefinition
;

Кроме того, если вы хотите вызвать функцию C на языке программирования Цанцзе, вам необходимо объявить функцию в коде Цанцзе и изменить ее с помощью ключевого слова Foreign.

Язык кода:javascript
копировать
foreign func foo(): Unit
foreign var a: Int32 = 0 // compiler error
foreign func bar(): Unit { // compiler error
return
}

Cangjie предоставляет возможности отладки на уровне исходного кода через отладчик cjdb и поддерживает межъязыковую отладку, такую ​​как одношаговый вход/выход из межъязыковых функциональных кодов, полный просмотр стека вызовов на разных языках, один отладчик выполняет отладку на нескольких языках. и поддерживает Cangjie, в то же время потоки используются для отладки, чтобы максимизировать удобство отладки для пользователя.

Пример межъязыкового вызова Cangjie C:

Межъязыковая одношаговая запись Cangjie C:

Межъязыковой стек вызовов Cangjie C, одноэтапная отладка в функции FFI-C:

Родной интеллект

С точки зрения эволюции компьютеров и программного обеспечения, язык претерпевает серьезные изменения каждые десять лет благодаря инновациям в аппаратном обеспечении и приложениях. Мы также прошли через несколько периодов: языки высокого уровня, такие как Lisp, C и C++, которые скрывают детали оборудования на серверах ПК, и традиционная кроссплатформенность Интернета.

Языки, которые легко пересадить, такие как Java, JS и Python, и языки, которые снижают порог разработки для мобильного Интернета и ориентированы на опыт разработки, такие как Swift и Kotlin. Теперь, когда мы вступили в эпоху разумной взаимосвязи всего, нам нужен родной язык ИИ, который сможет адаптироваться ко всем сценариям.

Хотя технология искусственного интеллекта широко популяризируется и применяется, разработка приложений искусственного интеллекта обычно требует от разработчиков глубоких профессиональных знаний и сталкивается с определенными проблемами, такими как крутая кривая обучения и сложность интеграции.

Huawei планирует использовать язык Cangjie для предоставления собственных возможностей искусственного интеллекта для упрощения разработки. Это означает, что функции, связанные с искусственным интеллектом, такие как развертывание моделей, интеллектуальное принятие решений и т. д., станут частью выразительности языка, что обеспечит эффективность. опыт разработки.

Обычные возможности ИИ достигаются за счет предоставления среды приложений ИИ, но было бы очень здорово, если бы она могла предоставлять более краткие грамматические выражения, основанные на возможностях родного языка, чтобы снизить порог для разработчиков при написании приложений ИИ. Таким образом, Цанцзе опирается на технологическое развитие веб- и мобильных терминалов и надеется построить декларативную парадигму, аналогичную области искусственного интеллекта, посредством возможностей DSL предметно-ориентированного языка.

Агент DSL — это встроенная возможность искусственного интеллекта, которую команда Cangjie в настоящее время разрабатывает и пробует. Это предметно-ориентированный язык, разработанный специально для разработки AI-агентов и совместной работы нескольких агентов. Это DSL (т. е. eDSL), встроенный в язык Cangjie. разработчикам не нужно изучать дополнительные сложные библиотеки и платформы, и они могут просто и интуитивно использовать функции искусственного интеллекта через DSL.

Язык кода:javascript
копировать
// Агентиз Определение
@agent class Planner {
  @prompt[pattern=APE] (
    action: «Помогайте пользователям планировать маршруты путешествий»,
    purpose: «Разрешить пользователям посещать больше достопримечательностей и полноценно отдыхать в запланированное время»,
    expectation: «Создайте разумный маршрут к туристическим достопримечательностям, включая время, достопримечательности, маршруты и другую информацию»
    )
}

// Использование агента
let agent = Planner()
let result = Agent.chat("Я хочу поехать в Шанхай")

Из фрагмента кода нетрудно увидеть, что синтаксис объявления и использования агента на языке Cangjie соответствует собственному синтаксису Cangjie. Он не только может использовать возможности статической проверки Cangjie, но также не создает дополнительной нагрузки на обучение для разработчиков и объединяет их. эффективное программирование и максимальная безопасность и надежность.

Agent DSL может не только повысить эффективность разработки приложений AI, но и сделать код более точно соответствующим работе и процессу принятия решений AI Agent. Общий дизайн предполагает достижение следующих эффектов:

  • Абстракция высокого уровня: агент — это встроенная языковая абстракция в DSL, его определение и описание более естественны и интуитивно понятны, их легко понять и поддерживать.
  • Минималистское совместное программирование нескольких агентов. Различные режимы совместной работы агентов абстрагируются посредством потоковых символов, и разработчики могут легко использовать совместную работу нескольких агентов для разработки более интеллектуальных приложений.
  • Интеллектуальная цепочка инструментов разработки: на основе Agent DSL и цепочка инструментов предоставляют разработчикам комплексную интеллектуальную поддержку — от разработки приложений до отладки и оптимизации.

В дополнение к Agent DSL, языковая группа Cangjie также создает собственную среду приложений AI. Благодаря сотрудничеству родного языка и платформы она предоставит разработчикам новый опыт программирования приложений в эпоху полносценарного интеллекта.

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода