01-仓颉介绍

01-仓颉介绍

官网

链接

仓颉编程语言:华为的创新之作

仓颉,这个名字来源于中国古代的神话人物,传说中是汉字的创造者。华为以此命名其编程语言,寓意深远——旨在创造一种全新的编程

方式。仓颉编程语言的官网提供了丰富的文档资源,让我们可以从中一窥其神秘面纱

底下的老哥就是仓颉

在这里插入图片描述

仓颉小故事

仓颉,在古代书籍里被描述为 “长着像龙一样的面容和四只眼睛,天生具有聪慧的品德”。传说他是中国原始社会后期黄帝的左边史官(当

时仓颉担任左史,沮诵担任右史)。根据历史记载:轩辕黄帝兴起之后,黄帝的史官仓颉和沮诵受到鸟兽足迹的启发,汇聚了劳动人民的

智慧,辛辛苦苦花费几十年时间,收集、整理在百姓中流传的象形文字符号,并且进行推广和使用。以前人们用绳结来记事,绳结虽然有

大小和形状的不同,但是时间长了就很难分辨清楚了。后来仓颉抬头观察奎星曲折环绕的走势,低头看乌龟背上的纹理、鸟兽的爪子痕

迹、山川的形状以及手掌的指纹,从中获得灵感,依据事物的形状创造出了象形文字。

仓颉语言的新特性

仓颉编程语言是面向全场景应用开发的现代编程语言。它凭借现代语言特性集成、全方位编译优化与运行时实现以及便捷的 IDE 工具链支

持,给开发者带来良好开发体验与出色程序性能。

  • 高效编程:以应用开发为导向,降低开发者入门与开发时的难度,支持多种开发范式与编程模式。它是多范式编程语言,涵盖函数式、命令式、面向对象等范式,具备值类型、类与接口、泛型等诸多特性,还有类型推断减轻类型标注负担,简明语法提升效率,语法糖与宏助力开发领域专用语言并构建领域抽象。
  • 安全可靠:秉持编码即安全理念,借助静态类型系统与自动内存管理保障程序类型与内存安全,提供如数组下标越界、类型转换等运行时检查及时纠错,还有代码扫描、混淆、消毒器等工具保障跨语言互操作与代码资产安全。
  • 轻松并发:实现轻量化用户态线程与并发对象库,让并发更高效。其用户态线程模型下,线程轻量且共享内存,使用方式与传统系统线程无异,运行时管理线程更高效且资源占用少。并发对象库避免数据竞争,核心库有无锁或细粒度锁算法减少线程阻塞提升并发度。
  • 卓越性能:仓颉编译器及运行时全栈优化编译,前端有基于 CHIR 的高层优化,后端有多种优化,运行时有轻量锁等优化,充分发挥处理器性能。运行时原生轻量化设计,模块化分层并定义公共对象模型与基础组件,减少冗余,按需加载包减少应用启动内存开销,对资源敏感设备友好。

仓颉的应用场景

  1. 鸿蒙应用场景 支持在开发鸿蒙应用的时候使用仓颉语言
  2. 服务端/云化场景 支持开发后端应用程序

成功案例

PixPin_2024-12-11_08-36-16

仓颉语言发展

  1. 2019 年 8 月发布和开源了方舟编译器。同年,发起研发自主编程语言的项目
  2. 2021 年 2 月,华为注册仓颉语言商标
  3. 2024 年上半年,仓颉语言推出
  4. 2024-11-11 仓颉公测版本已开放下载

快速体验

目前官网提供了在线体验的入口,学习者可以用最小的成本来快速学习上手仓颉编程语言

API 语法一览

image-20241211084635128

未来展望

华为仓颉编程语言虽然还处于发展阶段,但它已经展现出了巨大的潜力。随着华为在技术研发上的持续投入和生态系统的不断完善,仓颉编程语言有望在未来的科技领域发挥越来越重要的作用。它可能会吸引更多的开发者加入,形成一个充满活力的技术社区,共同推动技术的创新和应用的拓展。也许在不久的将来,我们会看到基于仓颉编程语言开发的各种优秀软件和系统,改变我们的生活和工作方式。

总之,华为仓颉编程语言是一门值得我们关注和学习的新兴编程语言。它有着独特的特点和优势,在多个领域有着广泛的应用前景。让我们一起期待它在未来能够创造更多的精彩吧!

后续

后续会推出如何搭建开发环境的文章介绍。

### 批量下载股票数据的方法 为了实现批量下载股票数据的目标,可以采用多种方法和工具。以下是几种常见的技术方案: #### 使用 Python 脚本进行批量下载 Python 是一种功能强大的编程语言,提供了许多用于金融数据分析的库,例如 `yfinance` 和 `pandas_datareader`。这些库可以从 Yahoo Finance 或其他在线资源获取历史股票数据。 以下是一个基于 `yfinance` 的示例代码片段[^1]: ```python import yfinance as yf def download_stock_data(tickers, start_date, end_date): data = {} for ticker in tickers: stock_data = yf.download(ticker, start=start_date, end=end_date) if not stock_data.empty: data[ticker] = stock_data return data tickers_list = ["AAPL", "GOOGL", "MSFT"] # 替换为你感兴趣的股票列表 start_date = "2020-01-01" end_date = "2023-01-01" stock_data_dict = download_stock_data(tickers_list, start_date, end_date) for ticker, df in stock_data_dict.items(): print(f"Data for {ticker}:") print(df.head()) ``` 此代码会从 Yahoo Finance 下载指定时间段内的股票价格数据,并将其保存在一个字典中。 --- #### 利用 HTTP 请求接口批量导入数据 如果目标是从自定义 API 获取股票数据,则可以通过发送 HTTP 请求来完成任务。通常情况下,API 提供商会提供 JSON 数据作为响应。这种场景下可参考如下方式实现数据抓取[^2]: 下面展示了一个使用 `requests` 库调用 RESTful 接口的例子: ```python import requests def fetch_stock_data(api_url, params=None): response = requests.get(api_url, params=params) if response.status_code == 200: return response.json() else: raise Exception(f"Failed to retrieve data: Status code {response.status_code}") api_endpoint = "https://example.com/api/stocks" # 假设这是第三方 API 地址 query_params = { "symbol": "AAPL", "fromDate": "2020-01-01", "toDate": "2023-01-01" } try: stock_info = fetch_stock_data(api_endpoint, query_params) print(stock_info) except Exception as e: print(e) ``` 上述代码展示了如何向远程服务器发起 GET 请求并解析返回的数据。 --- #### 多线程加速数据采集过程 当需要处理大量股票时,单一线程可能无法满足效率需求。此时可通过引入多线程机制提升程序运行速度。以仓颉语言为例,其内置了完善的性能监控工具支持高效的并发操作[^3]。虽然这里讨论的是另一种假想的语言环境,但在实际应用中也可以借助 Python 的标准库 `concurrent.futures` 实现类似的逻辑: ```python from concurrent.futures import ThreadPoolExecutor import yfinance as yf def get_single_stock_data(ticker, start_date, end_date): try: data = yf.download(ticker, start=start_date, end=end_date) if not data.empty: return (ticker, data) except Exception as e: print(f"Error fetching {ticker}: {e}") return None def parallel_download_stocks(tickers, start_date, end_date, max_workers=5): results = [] with ThreadPoolExecutor(max_workers=max_workers) as executor: futures = [ executor.submit(get_single_stock_data, tkr, start_date, end_date) for tkr in tickers ] for future in futures: res = future.result() if res is not None: results.append(res) return dict(results) tickers_to_fetch = ["TSLA", "AMZN", "FB"] data_range_start = "2019-01-01" data_range_end = "2022-01-01" all_stock_data = parallel_download_stocks( tickers=tickers_to_fetch, start_date=data_range_start, end_date=data_range_end, max_workers=8 ) print(all_stock_data.keys()) # 查看成功加载的股票名称 ``` 该脚本利用多线程池同时拉取多个股票的历史记录,从而显著减少总耗时。 --- #### 总结 以上介绍了三种主要途径来进行大规模股票数据收集工作:一是依赖于专门设计好的开源包;二是定制化对接特定服务商所提供的公开 Web Service;三是结合现代计算机科学理论中的高级概念——即通过合理分配计算资源进一步提高吞吐能力。每种策略都有各自适用范围以及优缺点,在具体实践中应视项目背景灵活选用合适的技术手段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万少-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值